anagrams - 颠倒字母顺序重新排列组合
优质
小牛编辑
130浏览
2023-12-01
⚠️ 警告: 这个函数的执行时间随着每个字符呈指数级增长。 超过8到10个字符的任何内容都会导致浏览器挂起,因为它试图解决所有不同的组合。
生成一个颠倒字母顺序的字符串,返回一个排列组合数组(包含重复)。
使用递归。 颠倒给定字符串中的每个字母,创建所有排列组合数组。 使用 Array.map()
将字母与每个部分字母组合在一起,然后使用 Array.reduce()
将所有字母组合到一个数组中。 基本情况是字符串 length
等于 2
或 1
。
const anagrams = str => { if (str.length <= 2) return str.length === 2 ? [str, str[1] + str[0]] : [str]; return str .split('') .reduce( (acc, letter, i) => acc.concat(anagrams(str.slice(0, i) + str.slice(i + 1)).map(val => letter + val)), [] ); };
anagrams('abc'); // ['abc','acb','bac','bca','cab','cba']