LeetCode003
#region LeetCode003
// 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
//示例 1:
//输入: s = "abcabcbb"
//输出: 3
//解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
//来源:力扣(LeetCode)
//链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters
//自定义 string 类的扩展方法 用法等价于java的CharAt()方法
public static char CharAt(this string s, int index)
{
if ((index >= s.Length) || (index < 0))
return '0';
return Convert.ToChar(s.Substring(index, 1));
}
public static int LengthOfLongestSubstring(string s)
{
int n = s.Length, ans = 0;
int[] index = new int[128];
for (int j = 0, i = 0; j < n; j++)
{
//取每个字符串的码值进行对比
i = Math.Max(index[s.CharAt(j)], i);
ans = Math.Max(ans, j - i + 1);
index[s.CharAt(j)] = j + 1;
}
return ans;
}