LeetCode 3. Longest Substring Without Repeating Characters
2022.08.21

問題

typescript

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でその文字以降と今の文字
    • 重複してないなら、単に足していく