
😎풀이
- 특정 문자로 시작되는 경우의 수를 탐색할 배열 선언
s 순회
2-1. 이전 문자와 사전순으로 이어져있거나(a -> b), z -> a의 형태인지 판단하여 길이 추가
2-2. 현재 문자로 시작하여 만들 수 있는 최대 경우의 수 갱신
- 모든 문자로 시작되는 경우의 수를 탐색하며, 중복되지 않게 만들 수 있는 부분 문자열의 수 반환
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)
};
늘 많이 배웁니다