주어진 문자열 입력에서 2개의 포인터 i 및 j를 사용하여 슬라이딩 창 기술을 사용합니다. i와 j는 모두 문자열에서 같은 문자를 가리킵니다. 문자열을 탐색하고 목록에 추가합니다. 반복되는 문자가 발견되면 목록에서 제거하고 목록에 추가하십시오.
예시 1
입력 − s ="abcabcbb"
출력 - 3
설명 − 답은 길이가 3인 "abc"입니다.
예시 2
입력 - s ="bbbbbb"
출력 − 1
설명 − 답은 길이가 1인 "b"입니다.
시간 복잡도 - O(N)
공간 복잡성 - O(N)
예
public class Arrays{
public int LongestSubstringWithNoRepeatingCharacters(string s){
List<char> c = new List<char>();
int iPointer = 0;
int jpointer = 0;
int max = 0;
while (jpointer < s.Length){
if (c.Contains(s[jpointer])){
c.Remove(s[iPointer]);
iPointer++;
}
else{
max = Math.Max(c.Count(), max);
c.Add(s[jpointer]);
jpointer++;
}
}
return max;
}
}
static void Main(string[] args){
int res = s.LongestSubstringWithNoRepeatingCharacters("abcabcbb");
Console.WriteLine(res);
} 출력
2