JavaScript 中循环字符串中的唯一子字符串
javascriptweb developmentfront end technology
问题
假设我们有一个 S,str。它是字符串 − 的无限环绕字符串
"abcdefghijklmnopqrstuvwxyz"。
因此,S 看起来像这样 −
"...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd...."。
我们需要编写一个 JavaScript 函数,该函数接受 str,我们将其称为字符串 str,作为唯一参数。
我们的函数应该找出 S 中存在多少个 str 的唯一非空子字符串。
我们的函数最终应该返回字符串 S 中 str 的不同非空子字符串的数量。
例如,如果函数的输入是 −
const str = "zab";
那么输出应该是 −
const output = 6;
输出说明
字符串S中,字符串"zab"有6个子字符串:"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