দেওয়া স্ট্রিং ইনপুট থেকে, স্লাইডিং উইন্ডো টেকনিক ব্যবহার করে دو পয়েন্টার i এবং j রাখুন। i এবং j উভয় স্ট্রিং-এ একই ক্যারেক্টারকে পয়েন্ট করবে। স্ট্রিং ট্রাভার্স করে লিস্টে যোগ করুন। যদি রিপিটেড ক্যারেক্টার পাওয়া যায় তবে লিস্ট থেকে সরিয়ে দিন অন্যথায় অ্যাপেন্ড করুন।
উদাহরণ ১
ইনপুট − s = "abcabcbb"
আউটপুট − 3
ব্যাখ্যা − উত্তর হলো "abc", দৈর্ঘ্য ৩।
উদাহরণ ২
ইনপুট − s = "bbbbb"
আউটপুট − 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