:::info 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 :::

    1. using System;
    2. using System.Collections.Generic;
    3. namespace Combine
    4. {
    5. class Program
    6. {
    7. static void Main(string[] args)
    8. {
    9. int data;
    10. var x = new Solution();
    11. data = x.LengthOfLongestSubstring("cdsvcsafgbtdabtgdsa");
    12. Console.WriteLine(data);
    13. }
    14. public class Solution
    15. {
    16. public int LengthOfLongestSubstring(string s)
    17. {
    18. // 判断字符串长度为0/1,直接输出字符串长度
    19. if (s.Length < 2)
    20. {
    21. return s.Length;
    22. }
    23. var left = 0;
    24. var right = 0;
    25. var maxlen = 0;
    26. var charSet = new HashSet<char>();
    27. while (right < s.Length) // 当最右边到达字符串长度时,停止运行
    28. {
    29. if (charSet.Contains(s[right]))
    30. {
    31. charSet.Remove(s[left++]);
    32. }
    33. else
    34. {
    35. charSet.Add(s[right++]);
    36. maxlen = Math.Max(maxlen, right - left);// 当前最大值和right-left的长度取最值
    37. }
    38. }
    39. return maxlen;
    40. }
    41. }
    42. }
    43. }