Vấn đề
Giả sử chúng ta có một S, str. là một chuỗi bao bọc vô hạn của chuỗi -
"abcdefghijklmnopqrstuvwxyz".
Do đó, S sẽ giống như thế này -
"...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd....".
Chúng tôi bắt buộc phải viết một hàm JavaScript có trong str, hãy gọi chuỗi đó là str, làm đối số duy nhất.
-
Hàm của chúng ta sẽ tìm ra có bao nhiêu chuỗi con không trống duy nhất của str có trong S.
-
Hàm của chúng ta cuối cùng sẽ trả về số lượng các chuỗi con không trống khác nhau của str trong chuỗi S.
Ví dụ:nếu đầu vào của hàm là -
const str = "zab";
Sau đó, đầu ra phải là -
const output = 6;
Giải thích đầu ra
Có sáu chuỗi con "z", "a", "b", "za", "ab", "zab" của chuỗi "zab" trong chuỗi S.
Ví dụ
Mã cho điều này sẽ là -
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)); Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
6