유효한 아나그램. (자바스크립트 DSA 시리즈)
문제
두 문자열 s와 t가 주어지면 t가 s의 애너그램이면 true를 반환하고 그렇지 않으면 false를 반환합니다.
애너그램은 일반적으로 모든 원래 문자를 정확히 한 번만 사용하여 다른 단어나 구의 문자를 재배열하여 형성된 단어 또는 구입니다.
해결책
이 문제를 해결하는 방법에는 두 가지가 있습니다.
방법 1
/**
* Since t is compared to s,
* convert all to lowercase,
* sort t and s,
* if t is exactly equal to s, then it is an anagram, else it isn't
* Runtime O(n)
*/
// const s = "anagram";
// const t = "nagaram"
const s = "rat", t = "car"
function anagram(s, t){
const sortedS = s.split('').sort().join('');
const sortedT = t.split('').sort().join('');
if (sortedS === sortedT) return true;
return false;
}
방법 2
지도 사용
/**
* Create a map object
* For each char in S, add the first occurrence with a value of 1. For subsequent occurrence, increase the value by +1.
* For each char in T, if it doesn't exist in map i.e undefined or value is <= 0, return false. If it does exist, do value -1, return true outside loop.
* @param {*} s
* @param {*} t
*/
function anagramTwo(s,t){
// for our answer to be an anagram, the word must be rearranged, hence, if the length of the two words are not same, it is not an anagram.
if(s.length !== t.length) return false;
const map = {};
for (let i of s) {
if(map[i] !== undefined) {
map[i]++
} else map[i] = 1
}
for (let i of t){
if (map[i] === undefined || map[i] <= 0) return false;
map[i]--;
}
return true
}
console.log(anagramTwo("ab", "a"))
도움이 되셨다면 좋아요, 공유 및 북마크를 눌러주세요. :)
Reference
이 문제에 관하여(유효한 아나그램. (자바스크립트 DSA 시리즈)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/olumidesamuel_/valid-anagram-javascript-dsa-series-2j9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)