[LeetCode] 10. Regular Expression Matching

Chobby·2024년 8월 21일
1

LeetCode

목록 보기
47/194

처음엔 정말 정규 표현식으로 사용해서 매칭된 길이와 비교하려했으나 실패하였음

function isMatch(s: string, p: string): boolean {
    const regP = new RegExp(p)
    const matchedStr = s.match(regP)
    if(!matchedStr) return false
    return matchedStr[0].length === s.length
};

그 이유는 테스트 케이스를 확인해보니, 정규 표현식과 비슷한 구조일 뿐 실제 정규 표현식이 p에 할당되는것이 아니라 오류가 발생

function isMatch(s: string, p: string): boolean {
    // 기본 케이스
    if (p === '') return s === '';
    
    // 첫 문자 매치 확인
    const firstMatch = s.length > 0 && (p[0] === s[0] || p[0] === '.');
    
    // '*' 패턴 처리
    if (p.length >= 2 && p[1] === '*') {
        return isMatch(s, p.slice(2)) || (firstMatch && isMatch(s.slice(1), p));
    } else {
        return firstMatch && isMatch(s.slice(1), p.slice(1));
    }
}

하여 재귀적으로 패턴이 올바른지 검색하는 풀이를 사용하였음

profile
내 지식을 공유할 수 있는 대담함

0개의 댓글