forked from rubythonode/javascript-problems-and-solutions
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrepeated-string-match.js
More file actions
40 lines (34 loc) · 879 Bytes
/
repeated-string-match.js
File metadata and controls
40 lines (34 loc) · 879 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/**
* Repeated String Match
*
* Given two strings A and B, find the minimum number of times A has to be repeated
* such that B is a substring of it. If no such solution, return -1.
*
* For example, with A = "abcd" and B = "cdabcdab".
*
* Return 3, because by repeating A three times (“abcdabcdabcd”), B is a substring of it;
* and B is not a substring of A repeated two times ("abcdabcd").
*
* Note:
* The length of A and B will be between 1 and 10000.
*/
/**
* @param {string} A
* @param {string} B
* @return {number}
*/
const repeatedStringMatch = (A, B) => {
const lenA = A.length;
const lenB = B.length;
for (let i = 0; i < lenA; i++) {
let j = 0;
while (j < lenB && B[j] === A[(i + j) % lenA]) {
j++;
}
if (j === lenB) {
return Math.ceil((i + j) / lenA);
}
}
return -1;
};
export { repeatedStringMatch };