颠倒字母顺序重新排列组合 anagrams – JavaScript 实用代码片段

?? 警告: 这个函数的执行时间随着每个字符呈指数级增长。 超过8到10个字符的任何内容都会导致浏览器挂起,因为它试图解决所有不同的组合。

生成一个颠倒字母顺序的字符串,返回一个排列组合数组(包含重复)。

使用递归。 颠倒给定字符串中的每个字母,创建所有排列组合数组。 使用 Array.map() 将字母与每个部分字母组合在一起,然后使用 Array.reduce() 将所有字母组合到一个数组中。 基本情况是字符串 length 等于 21

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']
赞(0) 打赏
未经允许不得转载:WEBTian开发 » 颠倒字母顺序重新排列组合 anagrams – JavaScript 实用代码片段

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

Tian开发相关广告投放 更专业 更精准

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏