如何使用 C# 从给定的字符串中查找不重复字符的最长子串的长度?
通过使用滑动窗口技术,让 2 个指针 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
广告