使用 JavaScript 统计字符串中可以构造出的回文数量


我们需要编写一个 JavaScript 函数,该函数将字符字符串作为第一个参数(例如 str),并将数字作为第二个参数(例如 num)。

该函数应计算可以从给定字符串 str 中构造的所有长度恰好为 num 的回文字符串的数量。然后,函数应最终返回计数。

例如:

如果输入字符串和数字为:

const str = 'ij';
const num = 4;

则输出应为:

const output = 4;

因为这四个可能的回文字符串是:

'iiii', 'jjjj', 'ijji', 'jiij'

方法

我们首先将使用哈希集合计算给定字符串中唯一字母的数量。如果回文的长度是奇数,则中间字符可以有 u 个选择,其中 u 是字符串中唯一字符的数量。

当 num 为偶数时,我们将有以下可能性:

power(u, num/2)

当 num 为奇数时,我们需要将此数字乘以 u,因为我们有 u 个选择用于该位置。

示例

以下是代码:

const str = 'ij';
const num = 4;
const findValidPalindromes = (str = '', num = 1) => {
   const set = new Set();
   for(let i = 0; i < str.length; i++){
      const el = str[i];
      set.add(el);
   };
   const u = set.size;
   if(num & 1){
      return Math.pow(u, num/2) * u;
   }else{
      return Math.pow(u, num/2);
   };
};
console.log(findValidPalindromes(str, num));

输出

以下是控制台输出:

4

更新于:2021年1月23日

276 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.