JavaScript中循环字符串中的唯一子字符串


问题

假设我们有一个S,str.,它是一个字符串的无限环绕字符串——

"abcdefghijklmnopqrstuvwxyz".

因此,S将如下所示——

"...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd....".

我们需要编写一个JavaScript函数来获取str,我们称之为字符串str,作为唯一的参数。

  • 我们的函数应该找出在S中存在多少个str的唯一且非空子字符串。

  • 我们的函数最终应该返回字符串S中str的不同非空子字符串的数量。

例如,如果输入函数为——

const str = "zab";

那么输出应该是——

const output = 6;

输出说明

字符串“zab”在字符串S中有六个子字符串“z”、“a”、“b”、“za”、“ab”、“zab”。

示例

此代码将为——

 实时演示

const str = "zab";
const allSubstrings = (str = '') => {
   const dp = new Array(26).fill(0);
   dp[str.charCodeAt(0) - 97] = 1;
   maxCount = 1;
   for (let i = 1; i < str.length; i++) {
      if ((str.charCodeAt(i) - str.charCodeAt(i - 1) == 1) || (str.charCodeAt(i) - str.charCodeAt(i - 1) == -25)) {
         maxCount++;
      } else {
         maxCount = 1;
      }
      dp[str.charCodeAt(i) - 97] = Math.max(dp[str.charCodeAt(i) - 97], maxCount);
   }
   return dp.reduce((item, val) => {
      return val + item;
   })
};
console.log(allSubstrings(str));

输出

控制台中的输出将是——

6

更新日期:04-Mar-2021

145次浏览

开启您的 职业生涯

完成课程获得认证

开始
广告