如何从给定的字符串中找到最长子字符串的长度而不使用 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

以上是 如何从给定的字符串中找到最长子字符串的长度而不使用 C# 重复字符? 的全部内容, 来源链接: utcz.com/z/360091.html

回到顶部