变位词 一种把某个词或句子的字母的位置(顺序)加以改换所形成的新词

function anagram(words) {
const anagramMap = {};

for (const word of words) {
const mark = getWordMark(word);
if (anagramMap[mark]) {
anagramMap[mark].push(word);
} else {
anagramMap[mark] = [word];
}
}

return anagramMap;
}

function getWordMark(word) {
if (!word) {
return '';
}

const charMap = {}
for (const char of word) {
if (charMap[char]) {
charMap[char]++;
} else {
charMap[char] = 1;
}
}

const keys = Object.keys(charMap).sort();

let mark = '';
for (const key of keys) {
mark += key;
const value = charMap[key]
if (value > 1) {
mark += value;
}
}

return mark;
}

anagram(['pots', 'eat', 'stop', 'tops', '好你', 'tea', 'word', 'form', 'from', '你好']);
展开
评论