😎풀이

  1. 투 포인터 사용
  2. 각각의 포인터 문자가 일치한다면 모두 전진
  3. 각각의 포인터 문자가 불일치 한다면
    3-1. typed의 현재 문자와 이전 문자가 동일하다면 다음 문자로 이동
    3-2. typed가 LongPressed도 아니라면, false 반환
  4. name 포인터의 탐색종료 여부 반환
function isLongPressedName(name: string, typed: string): boolean {
    const n = typed.length
    let nameIdx = 0
    let typedIdx = 0
    while(typedIdx < n) {
        if(name[nameIdx] === typed[typedIdx]) {
            nameIdx++
            typedIdx++
        } else if(typedIdx > 0 && typed[typedIdx] === typed[typedIdx - 1]) {
            typedIdx++
        } else {
            return false
        }
    }
    return nameIdx === name.length
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글