输入一个字符串 :
“pwwkew”
输出:
3
//“wke”
solution
class Solution {
public int lengthOfLongestSubstring(String s) {
int sub = 0;
int before = 0;
for (int i = 0 ; i < s.length() ; ++i) {
int tempIndex = this.indexOf(s, i-before, i, s.charAt(i));
if (tempIndex == -1) {
++before;
} else {
before = i - tempIndex;
}
if (before > sub) {
sub = before;
}
}
return sub;
}
public int indexOf(String s, int begin, int end, int ch) {
for (int i = begin; i < end ; ++i) {
if (s.charAt(i) == ch) {
return i;
}
}
return -1;
}
}
explain:
before是累计找到的不同字符数, 若一直没找到, 则一直累加
indexof 方法从当前位置往前before开始, 找相同的字符
如果找到, 则舍弃找到的位置之前的所有字符,继续查重
每次迭代结尾,在sub中保存目前最长的无重复子字符串
网友评论