题目:输入一个字符串,求该字符串中不含重复字符的最长子 字符串的长度。例如,输入字符串"babcca",其最长的不含重复字符的子字符串是"abc",长度为3。
// 用两个指针来指向子字符串的最左边和最右边
// 通过移动两个指针来找到不包含重复字符的字符串
// 当字符串不重复时将右边的指针往右移动增加子字符串的长度
// 当子字符串中字符重复时将左边的指针往右移动直到两个指针
// 之间的子字符串中无重复字符为止counts长度为128的一个哈希表
// 因为ASCII码最多表示128个数,将字符的ASCII码作为counts数组的索引
// 值作为字符出现的次数
public int lengthOfLongestSubstring(String s) {
if (s.length() == 0) {
return 0;
}
int[] counts = new int[128];
int i = 0;
int j = -1;
int longest = 1