leetcode: 중복 문자 없 는 최 장 하위 문자열

1580 단어 알고리즘
문자열 을 지정 합 니 다. 중복 문자 가 없 는 문자열 을 찾 아 보 세 요. 최 장자 꼬치 길이
예시 1:
  : "abcabcbb"
  : 3 
  :               "abc",       3。

예시 2:
  : "bbbbb"
  : 1
  :               "b",       1。

예시 3:
  : "pwwkew"
  : 3
  :               "wke",       3。
        ,           "pwke"    

사고방식: 중복 이 없 음 을 판단 하려 면 맵 으로 비 추고 키 는 문자 이 며 value 는 문자 의 아래 표 시 를 해 야 한다.구간 아래 표시, left, right 를 정의 합 니 다.문자열 을 옮 겨 다 니 며 맵 에서 존재 하 는 지 찾 고 존재 하지 않 으 면 맵 에 문 자 를 추가 합 니 다.중복 문자 가 존재 하면 left 를 중복 문자 로 업데이트 합 니 다 + 1.
class Solution { public:     int lengthOfLongestSubstring(string s) {         if(s.size() == 0)         {             return 0;         }         std::map hashMap;         std::map::iterator it;         int left = 0;         int right = 0;         int max = INT_MIN;         for( ;right < s.size() ; ++right)         {             it = hashMap.find(s[right]);             if (it != hashMap.end() && left <= it->second)             {                 left = it->second + 1;             }             hashMap[s[right]] = right;             if(right - left + 1 > max)             {                 max = right - left + 1;             }         }         return max;     } };

좋은 웹페이지 즐겨찾기