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; } };
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.