Vấn đề
Cần viết hàm JS nhận chuỗi, kiểm tra xem chuỗi có thể tạo bằng cách lấy một chuỗi con và nối nhiều bản sao của nó không.
Ví dụ:
const str = 'thisthisthisthis';
Kết quả:
const output = true;
Giải thích:
Chuỗi tạo bằng lặp lại 'this'.
Ví dụ
Mã thực hiện:
const str = 'thisthisthisthis'; const repeatedSubstring = (str = '') => { const {length} = str; const checkSubString = ss => { const m = ss.length; for (let i = 0; i < length; i += m) for (let j = 0; j < m; j++) if (str[i+j] !== ss[j]) return false; return true; }; let factor = 2, len; while (length/factor >= 1){ while (length % factor) factor++; len = length/factor; if (checkSubString(str.substring(0,len))){ return true; }; factor++; }; return false; }; console.log(repeatedSubstring(str));
Giải thích code:
Thiết lập hàm kiểm tra mẫu chuỗi con. Duyệt các ước số của độ dài chuỗi để tìm mẫu lặp lại khả thi.
Kết quả
Kết quả in ra console:
true