N

(Leet Code JS)Repeated Substring Pattern 본문

Leet Code 알고리즘

(Leet Code JS)Repeated Substring Pattern

naeunchan 2022. 5. 13. 16:29
728x90
반응형

https://leetcode.com/problems/repeated-substring-pattern/

 

Repeated Substring Pattern - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

문자열 패턴 찾기 문제.

 

이중 for문으로 쉽게 해결할 수 있다.

먼저 pattern을 0번째 인덱스부터 i번째 인덱스까지 자른다.

그리고 isRepeated라는 flag를 설정하고, 내부 for문이 모두 돌게 되면 isRepated는 바뀌지 않아 패턴 문자열이라는 것을 알 수 있도록 한다.

 

내부 for문.

pattern은 0 ~ i번째 인덱스까지 문자열을 잘랐기 때문에,

비교할 문자열은 i부터 pattern의 문자열의 길이만큼 하나하나 비교한다.

i부터인 이유는 slice는 i - 1까지 끊기 때문이다.

cmp = s.slice(j, j + pattern.length)로 비교할 문자열을 자른다.

 

pattern과 cmp를 비교하여 같지 않다면 flag를 false로 바꾸고

for문을 빠져나와 다른 패턴을 찾아보도록 한다.

 

만약 모든 for문을 돌아도 패턴이 없다면 return false;

중간에 flag가 true인 경우는 패턴이 있기 때문에 return true;

/**
 * @param {string} s
 * @return {boolean}
 */
var repeatedSubstringPattern = function(s) {
    for(let i = 1; i < s.length; i++){
        const pattern = s.slice(0, i);
        let isRepeated = true;
        
        for(let j = i; j < s.length; j += pattern.length){
            const cmp = s.slice(j, j + pattern.length);
            
            if(pattern !== cmp){
                isRepeated = false;
                break;
            }
        }
        
        if(isRepeated){
            return true;
        }
    }
    
    return false;
};
728x90
반응형