https://leetcode.com/problems/longest-substring-without-repeating-characters/description/
* 의사코드
1. map에 해당문자의 등장횟수기록
2. 해당문자가 2회이상등장 -> 등장횟수가1이 될때까지 l을 우측으로 조정
3. 모든 중복문자없는 부분문자열을 탐색하면서 그때의 최대값을 ret에 저장함
* 전체코드
class Solution {
public:
int lengthOfLongestSubstring(string s) {
unordered_map<char,int> m; //m[a]=2, a의 등장횟수가2임
int r=0,l=0,n=s.size(), ret=0;
while(r<n){
m[s[r]]++; //해당 문자의 등장횟수++
while(m[s[r]]>1){ //2회이상인경우, 1회가되도록 조정해야함
m[s[l]]--; //좌측을 조정
l++;
}
ret=max(ret,r-l+1);
r++;
}
return ret;
}
};
'Algorithm > 슬라이딩 윈도우' 카테고리의 다른 글
[알고리즘] 백준 11003 최솟값 찾기 // 슬라이딩 윈도우, 덱 (0) | 2024.12.27 |
---|---|
백준 2096 내려가기 c++ // dp도안되면? 슬라이딩 윈도우 (0) | 2024.05.12 |