题目描述
思路:
这个题目我们可以用队列解决。首先,判断字符串中的字符是否在队列中,若不在,则入队;如果已在队列中,则判断当前队列的长度是否大于max,
若大于max,则对max进行赋值,然后删除队列中重复元素之前的所有字符(包括重复字符),进行下一轮循环,直至遍历整个字符串。
代码如下:
public class Solution {
public int LengthOfLongestSubstring(string s)
{
int max = 0;
Queue<char> str = new Queue<char>();
foreach (char i in s)
{
if (str.Contains(i))
{
if (str.Count > max)
{
max = str.Count;
}
char str1;
do
{
str1 = str.Dequeue();
} while (str1 != i);
}
str.Enqueue(i);
}
if (str.Count > max)
{
max = str.Count;
}
return max;
}
}