दिए गए स्ट्रिंग इनपुट से, दो पॉइंटर्स i और j रखकर स्लाइडिंग विंडो तकनीक का उपयोग करें। दोनों i और j स्ट्रिंग में एक ही वर्ण पर इंगित करेंगे। स्ट्रिंग को पार करें और इसे सूची में जोड़ें। यदि दोहराया गया वर्ण मिलता है तो इसे सूची से हटा दें अन्यथा सूची में जोड़ें।
उदाहरण 1
इनपुट − s = "abcabcbb"
आउटपुट − 3
व्याख्या − उत्तर "abc" है, जिसकी लंबाई 3 है।
उदाहरण 2
इनपुट − s = "bbbbb"
आउटपुट − 1
व्याख्या − उत्तर "b" है, जिसकी लंबाई 1 है।
समय जटिलता − 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