这道题的关键还是掌握好循环,控制两个指针p,q。p在左,q在右。如果q字符等于p字符的话,则p可以向右挪一个。如果q字符等于p到q之间的一个字符的话则,q移动到相同字符右边一个。之前的字符串长度可以进行存档,即与最长长度记录进行比较。
public class Solution {
public int lengthOfLongestSubstring(String s) {
if (s.length() == 0)
return 0;
int p = 0;
int q = 1;
int length = s.length();
int maxLength = 0;
while (q < length) {
if (s.charAt(q) == s.charAt(p)) {
p++;
q++;
continue;
} else {
for (int i = p + 1; i < q; i++) {
if (s.charAt(i) ==s.charAt(q)) {
if (maxLength < (q-p)) {
maxLength = q - p;
}
p = i + 1;
break;
}
}
q++;
}
}
if (maxLength < (q - p)) {
maxLength = q - p;
}
return maxLength;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。