주어진 문자열 a, b가 있을 때,
a를 몇번 반복해야 b가 한번이라도 포함되는지 찾는 문제다.
처음엔 별생각 없이 str.includes(b) 대신 new RegExp(b).test(str) 를 사용해 풀었었다.
그러나 정규식보다 includes가 훨씬 빨랐다.
// 정규식보다 includes를 쓰는게 런타임도, 메모리도 훨씬 낫다
// 정규식 : Runtime 340ms, Memory 45MB
// includes : Runtime 84ms, Memory 40.4MB
/**
* @param {string} a
* @param {string} b
* @return {number}
*/
var repeatedStringMatch = function(a, b) {
let str = a;
let count = 1;
while(!str.includes(b)){
// 반복된 문자열이 a + b 길이보다 긴데도 찾을 수 없다면 존재하지 않는 것이다.
if(str.length > a.length + b.length) return -1;
str += a;
count++;
}
return count;
};
/**
* @param {string} a
* @param {string} b
* @return {number}
*/
var repeatedStringMatch = function(a, b) {
let str = a;
let count = 1;
const regex = new RegExp(b);
while(!regex.test(str)){
// 반복된 문자열이 a + b 길이보다 긴데도 찾을 수 없다면 존재하지 않는 것이다.
if(str.length > a.length + b.length) return -1;
str += a;
count++;
}
return count;
};
'Web development > Algorithm' 카테고리의 다른 글
[LeetCode] Longest Substring Without Repeating Characters (javascript) (0) | 2021.06.15 |
---|---|
[LeetCode] Longest Substring Without Repeating Characters (javascript) (0) | 2021.06.11 |
[LeetCode] Single Number (javascript) (0) | 2021.06.11 |
[LeetCode] Generate Parentheses (javascript) (0) | 2021.06.08 |
[LeetCode] 3Sum (javascript) (0) | 2021.06.08 |
댓글