LeetCode [中等]3. 无重复字符的最长子串

3. 无重复字符的最长子串 - 力扣(LeetCode)

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

LeetCode [中等]3. 无重复字符的最长子串_第1张图片

 

1. 滑动窗口(Sliding Window):

滑动窗口是一种用于处理数组或列表的子数组或子序列的问题的技术。它通过维护一个可变大小的窗口,根据问题的要求在数组上滑动这个窗口,以便找到所需的结果。

典型的滑动窗口问题包括找出最小子数组和最大子数组和包含特定元素的最短子数组等。通常,通过两个指针来定义窗口的开始和结束。

2.思路

使用队列,将字符加入队列:

若队列中有重复的字符,那就移除队列中第一个字符;

若没有,则加入队列,并且更新max数值

public class Solution {
    public int LengthOfLongestSubstring(string s) {
        int max = 0;
        Queue q = new Queue();
        foreach(char c in s)
        {
            while(q.Contains(c))
                q.Dequeue();
            q.Enqueue(c);
            if(q.Count > max)
                max = q.Count;
        }

        return max;
    }
}

你可能感兴趣的:(C#题解,算法)