Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào hai chuỗi, str1 và str2, làm đối số thứ nhất và thứ hai.
Hàm phải trả về số lần tối thiểu cần lặp lại chuỗi str1 sao cho str2 trở thành một chuỗi con của nó. Nếu không thể làm cho str2 trở thành chuỗi con bằng cách lặp lại str1, hàm trả về -1.
Ví dụ, nếu đầu vào của hàm là:
Đầu vào
const str1 = 'wxyz'; const str2 = 'yzwxyzwx';
Đầu ra
const output = 3;
Giải thích đầu ra
Trả về 3 vì khi lặp lại str1 ba lần thành wxyzwxyzwxyz, chuỗi str2 (yzwxyzwx) là một chuỗi con của nó.
Ví dụ
Dưới đây là mã:
const str1 = 'wxyz'; const str2 = 'yzwxyzwx'; const countRepeat = (str1 = '', str2) => { let i = 1; let current = str1; while (true) { if (current.indexOf(str2) >= 0) { return i; } if ((current.length > str2.length * 2) && i > 2) { return -1; } current += str1; i += 1; } }; console.log(countRepeat(str1, str2));Đầu ra
3