![[捂脸]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_28.8981538.png)
变位词 一种把某个词或句子的字母的位置(顺序)加以改换所形成的新词
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', '你好']);
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', '你好']);
展开
评论
2