문제
S, str이 있다고 가정합니다. 이것은 문자열의 무한 랩어라운드 문자열입니다 -
"abcdefghijklmnopqrstuvwxyz".
따라서 S는 다음과 같이 보일 것입니다 -
"...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd....".
str을 받는 JavaScript 함수를 작성해야 합니다. 이 문자열을 유일한 인수로 str이라고 부르겠습니다.
-
우리 함수는 str의 비어 있지 않은 고유한 부분 문자열이 S에 몇 개 있는지 알아내야 합니다.
-
우리의 함수는 마침내 문자열 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