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