[LeetCode] 3407. Substring Matching Pattern

Chobby·3일 전

LeetCode

목록 보기
905/911

😎풀이

  1. *를 기준으로 패턴 문자 분리
  2. s 2중 순회
    2-1. 현재 범위 산출
    2-2. 시작 패턴 혹은 종료 패턴이 발견되지 않으면 false 반환
    2-3. 두 패턴이 같은 문자를 가르킨다면 false 반환
    2-4. 두 패턴에 중복된 문자열이 있다면 false 반환
    2-5. 모든 케이스에 걸리지 않은 경우, sp에 매칭되는 패턴이 있음
function hasMatch(s: string, p: string): boolean {
    const [start, end] = p.split("*")
    const sLen = s.length
    for(let left = 0; left < sLen; left++) {
        for(let right = left + 1; right <= sLen; right++) {
            const curr = s.slice(left, right)
            const startIdx = curr.indexOf(start)
            const endIdx = curr.lastIndexOf(end)
            if(start && startIdx === -1) continue
            if(end && endIdx === -1) continue
            if(start && end && startIdx === endIdx) continue
            if(startIdx + start.length > endIdx) continue
            return true
        }
    }
    return false
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글