[LeetCode] 467. Unique Substrings in Wraparound String

Chobby·3일 전

LeetCode

목록 보기
1019/1023

😎풀이

  1. 특정 문자로 시작되는 경우의 수를 탐색할 배열 선언
  2. s 순회
    2-1. 이전 문자와 사전순으로 이어져있거나(a -> b), z -> a의 형태인지 판단하여 길이 추가
    2-2. 현재 문자로 시작하여 만들 수 있는 최대 경우의 수 갱신
  3. 모든 문자로 시작되는 경우의 수를 탐색하며, 중복되지 않게 만들 수 있는 부분 문자열의 수 반환
function findSubstringInWraproundString(s: string): number {
    const startWith = Array.from({ length: 26 }, () => 0)
    startWith[s.charCodeAt(0) - 97]++
    let curLen = 1
    for(let i = 1; i < s.length; i++) {
        const curCode = s.charCodeAt(i)
        const prevCode= s.charCodeAt(i - 1)
        if(curCode - prevCode === 1 || prevCode - curCode === 25) {
            curLen++
        } else {
            curLen = 1
        }
        startWith[curCode - 97] = Math.max(startWith[curCode - 97], curLen)
    }
    return startWith.reduce((acc, cur) => acc + cur, 0)
};
profile
내 지식을 공유할 수 있는 대담함

3개의 댓글

comment-user-thumbnail
3일 전

늘 많이 배웁니다

2개의 답글