주어진 문자열 입력에서 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