如何使用 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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP