:::info 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 :::
using System;
using System.Collections.Generic;
namespace Combine
{
class Program
{
static void Main(string[] args)
{
int data;
var x = new Solution();
data = x.LengthOfLongestSubstring("cdsvcsafgbtdabtgdsa");
Console.WriteLine(data);
}
public class Solution
{
public int LengthOfLongestSubstring(string s)
{
// 判断字符串长度为0/1,直接输出字符串长度
if (s.Length < 2)
{
return s.Length;
}
var left = 0;
var right = 0;
var maxlen = 0;
var charSet = new HashSet<char>();
while (right < s.Length) // 当最右边到达字符串长度时,停止运行
{
if (charSet.Contains(s[right]))
{
charSet.Remove(s[left++]);
}
else
{
charSet.Add(s[right++]);
maxlen = Math.Max(maxlen, right - left);// 当前最大值和right-left的长度取最值
}
}
return maxlen;
}
}
}
}