javascript - 数组字符串的字谜
问题描述
该程序适用于单个单词,但我想传递一个字符串数组(多个单词)。
let output = getAnagrams("CATCH"); //it is working for this
let output = getAnagrams(["catch", "Priest", "Monkey", "Bruise"]);
我希望它为此工作。
function swap(chars, i, j) {
var tmp = chars[i];
chars[i] = chars[j];
chars[j] = tmp;
}
function getAnagrams(input) {
let newInput = input.toString().toLowerCase();
console.log(newInput);
var counter = [],
anagrams = [],
chars = newInput.split(''),
length = chars.length,
i;
for (i = 0; i < length; i++) {
counter[i] = 0;
}
anagrams.push(newInput);
i = 0;
while (i < length) {
if (counter[i] < i) {
swap(chars, i % 2 === 1 ? Counter[i] : 0, i);
counter[i]++;
i = 0;
anagrams.push(chars.join(''));
} else {
counter[i] = 0;
i++;
}
}
// return anagrams;
}
解决方案
由于您已经有一个需要 1 个字符串的方法,为什么不为数组中的每个字符串调用它,然后使用扁平化返回数组flatMap
function getAnagrams(input) {
let newInput = input.toString().toLowerCase();
var counter = [],
anagrams = [],
chars = newInput.split(''),
length = chars.length,
i;
for (i = 0; i < length; i++) {
counter[i] = 0;
}
anagrams.push(newInput);
i = 0;
while (i < length) {
if (counter[i] < i) {
swap(chars, i % 2 === 1 ? counter[i] : 0, i);
counter[i]++;
i = 0;
anagrams.push(chars.join(''));
} else {
counter[i] = 0;
i++;
}
}
return anagrams;
}
function swap(arr,i,j){
const tmp = arr[i];
arr[i] = arr[j]
arr[j] = tmp
}
const result = ["catch", "Priest", "Monkey", "Bruise"].flatMap(i => getAnagrams(i))
console.log(result)
推荐阅读
- r - 展平R中数据框中的列表列
- python - 嵌套字典Python的逆序
- r - facet_wrap 布局类似于 facet_grid
- swift - 您是否能够跨不同的视图控制器/.swift 文件检索存储在 UserDefaults 中的数据?
- beautifulsoup - 使用 BS4 和请求发送不和谐嵌入的产品库存解析表单 HTML
- discord - PokeCord 旁边的绿条是怎么做的?
- php - 在数组PHP中组合两个随机数
- scala - 如何根据配方中“应用”成分的另一序列减少每种单独的成分
- vba - 在 Access 表单上添加“新按钮”选项
- python - QApplication 在第二个进程的非主线程中使用 pyQt4:这段代码是否合法,如果不合法,为什么它有效?