给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
public int LengthOfLongestSubstring(string s) {
int ret = 0, sIndex = 0, eIndex = 0;
Dictionary<int, int> s_child = new Dictionary<int, int>();
int length= s.Length;
while (sIndex < length && eIndex < length) {
//如果集合中没有改元素,则将该元素添加到字典,并继续遍历
if (!s_child.ContainsKey(s[eIndex])) {
s_child.Add(s[eIndex], eIndex);
eIndex++;
ret = Math.Max(ret, eIndex - sIndex);
}
else {
//如果集合中有该元素,则需要调整起始标志位,从当前起始标志位开始移除,直至移除起始标志位到相同元素位置索引处
s_child.Remove(s[sIndex]);
sIndex++;
}
}
return ret;
}