public int LengthOfLongestSubstring(string s) {
if (s.Length == 0) return 0;
if (s.Length == 1) return 1;
List<char> record = new List<char>();
int longest = 0;
for (int i = 0; i < s.Length; i++)
{
if (record.Contains(s[i]))
{
if (record.Count > longest)
{
longest = record.Count;
}
int indexd = record.IndexOf(s[i]);
if (record.Count - (indexd + 1) > 0)
{
record = record.GetRange(indexd + 1, record.Count - (indexd + 1));
}
else { record = new List<char>(); }
}
record.Add(s[i]);
}
longest = Math.Max(longest, record.Count);
return longest;
}
Runtime: 112 ms, faster than 57.99% of C# online submissions for Longest Substring Without Repeating Characters.
我的算法。 其实也想到用两个指针,但是怎么做到判断开始出现重复了。
用string 里面的indexof!=-1呢 我真的是千年List 就用List的Contains了 等下我改成string的 会不会更快一点呢。
if (s.Length == 0) return 0;
if (s.Length == 1) return 1;
List<char> record = new List<char>();
int longest = 0;
for (int i = 0; i < s.Length; i++)
{
if (record.Contains(s[i]))
{
if (record.Count > longest)
{
longest = record.Count;
}
int indexd = record.IndexOf(s[i]);
if (record.Count - (indexd + 1) > 0)
{
record = record.GetRange(indexd + 1, record.Count - (indexd + 1));
}
else { record = new List<char>(); }
}
record.Add(s[i]);
}
longest = Math.Max(longest, record.Count);
return longest;
}
Runtime: 112 ms, faster than 57.99% of C# online submissions for Longest Substring Without Repeating Characters.
我的算法。 其实也想到用两个指针,但是怎么做到判断开始出现重复了。
用string 里面的indexof!=-1呢 我真的是千年List 就用List的Contains了 等下我改成string的 会不会更快一点呢。