LeetCode 3. Longest Substring Without Repeating Characters
2022.08.21
問題
https://leetcode.com/problems/longest-substring-without-repeating-characters
typescript
function lengthOfLongestSubstring(s: string): number {
const result = s.split('').reduce((prev, current) => {
const beforeAppearedIndex = prev.subString.indexOf(current)
const subString = beforeAppearedIndex === -1
? prev.subString + current
: prev.subString.slice(beforeAppearedIndex + 1) + current
return { maxLength: Math.max(prev.maxLength, subString.length), subString }
}, { maxLength: 0, subString: '' })
return result.maxLength
}
- reduce使う
- 今の候補となっている文字列に対して、indexOf(current)で重複がないかチェック
- 重複してたら、sliceでその文字以降と今の文字
- 重複してないなら、単に足していく