LeetCode 풀기 - 문자를 반복하지 않는 가장 긴 부분 문자열

4983 단어

의문



문자열 s가 주어지면 문자를 반복하지 않고 가장 긴 부분 문자열의 길이를 찾습니다.

예 1:

Input: s = "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.


예 2:

Input: s = "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.


예 3:

Input: s = "pwwkew"
Output: 3
Explanation: The answer is "wke", with the length of 3.
Notice that the answer must be a substring, "pwke" is a subsequence and not a substring.


예 4:

Input: s = ""
Output: 0


제약 조건:
  • 0 <= s.length <= 5 * 104
  • s는 영문자, 숫자, 기호, 공백으로 구성됩니다.

  • 갑시다!



    를 사용하여 해결합니다.

  • P - 문자, 숫자, 기호 및 공백으로 구성된 문자열 s

  • R - 반복되는 문자가 없는 가장 긴 부분 문자열의 길이인 숫자를 반환합니다.

  • E - 질문에 의해 제공된 예. (위 참조)

  • P - 아래 참조

  • 시도 1




    var lengthOfLongestSubstring = function(s) {
        const arr = s.split('')
        let charMap = {}
        let count = [ 0 ]
    
        for (let i=0; i<arr.length; i++) {
            if (!charMap[arr[i]]) {
                count[count.length - 1] = count[count.length - 1]+1
                charMap[arr[i]] = 1
            } else {
                charMap = {}
                charMap[arr[i]] = 1
                count[count.length] = 1
            }
        }
        return count.reduce((max, current) => current > max ? current : max)
    };
    
    


    시도 1의 결과




    console.log(lengthOfLongestSubstring("abcabcbb")) // 3 - PASS
    console.log(lengthOfLongestSubstring("aab")) // 2 - PASS
    console.log(lengthOfLongestSubstring("dvdf")) // 2  - FAIL (CORRECT is 3) 
    


    계속하려면...

    시도 2...

    좋은 웹페이지 즐겨찾기