Vấn đề
Cho chuỗi vô hạn S là chuỗi lặp lại của "abcdefghijklmnopqrstuvwxyz".
Cần viết hàm JS nhận chuỗi str, đếm số dãy con không rỗng duy nhất của str xuất hiện trong S.
Ví dụ:
const str = "zab";
Kết quả:
const output = 6;
Giải thích:
6 dãy con: "z", "a", "b", "za", "ab", "zab" đều có trong S.
Ví dụ
Mã thực hiện:
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));
Kết quả
Kết quả in ra console:
6