问题是,
Given a word and a list of possible anagrams, selects the correct sublist.
Given "listen" and a list of candidates like "enlists" "google"
"inlets" "banana"` the program should return a list containing
"inlets".
给出的测试用例类型为:
var anagram = require('./anagram');
describe('Anagram', function() {
xit("detects simple anagram",function() {
var subject = anagram("ant");
var matches = subject.matches(['tan', 'stand', 'at']);
expect(matches).toEqual(['tan']);
});
});
这是我一直在想的,
但问题是,我不知道如何开始,请帮助。
答案 0 :(得分:0)
是的,你的想法是正确的,这是你如何实现它:
var anagrams = function( input, wordlist ){
// sort the input word
var sortedinput = input.split('').sort().join('');
// filter the array by checking if...
return wordlist.filter( function( word ){
// ...the word after sorting matches the sorted input
return word.split('').sort().join('') == sortedinput;
});
}
anagrams( 'listen', ["enlists", "google", "inlets", "banana"] );
// ["inlets"]
答案 1 :(得分:0)
将当前单词拆分为char数组后:
遍历单词列表;
检查数组的长度是否与比较的字char数组相等;
对比较的单词char数组和当前单词char数组进行排序,并检查每个元素是否等于该数组中的所有索引。