如何使用 C# 从给定的字符串中找到最长子字符串的长度,而不重复字符?
csharpserver side programmingprogramming更新于 2025/4/18 8:52:17
从给定的字符串输入中,使用滑动窗口技术,有两个指针 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

