Анаграмма строки — это другая строка, содержащая те же символы; только порядок символов может быть другим. Например, "abcd" и "dabc" являются анаграммами друг друга.
Этот алгоритм относится к шаблону счетчика частоты.
Теперь давайте решим эту проблему.
validAnagram('anagram', 'nagaram'); // true validAnagram('aaz', 'zza'); // false validAnagram('rat', 'cat'); // false
- Проверьте, имеют ли все строки одинаковую длину. (пограничный случай)
function validAnagram(str1,str2){ if(str1.length!=str2.length){ return false; } }
2. Создайте один пустой объект
function validAnagram(str1,str2){ if(str1.length!=str2.length){ return false; } let counter = {}; }
3. Прокрутите str1, чтобы записать частоту в объекте.
function validAnagram(str1,str2){ if(str1.length!=str2.length){ return false; } let counter = {}; for(let item of str1){ if(counter[item]>0){ counter[item]++; }else{ counter[item] = 1; } } }
4. Теперь проверьте, совпадают ли значения ключей во втором массиве. Кроме того, проверьте, установлена ли у них одинаковая частота.
function validAnagram(str1,str2){ if(str1.length!=str2.length){ return false; } let counter = {}; for(let item of str1){ if(counter[item]>0){ counter[item]++; }else{ counter[item] = 1; } } for(let item2 of str2){ if(counter[item2]>0){ counter[item2]--; } else{ console.log('Not a anagram') return false; } } console.log('Is a anagram') return true; }