题目:
给定一个字符串,找出不含有重复字符的最长子串的长度。
示例:
给定 "abcabcbb"
,没有重复字符的最长子串是 "abc"
,那么长度就是3。
给定 "bbbbb"
,最长的子串就是 "b"
,长度是1。
给定 "pwwkew"
,最长子串是 "wke"
,长度是3。请注意答案必须是一个子串,"pwke"
是 子序列 而不是子串
在提交了解答后看到用时最少的解法是这样的:
class Solution {
public int lengthOfLongestSubstring(String s) {
int max=0;
int count=0;
char[] c=s.toCharArray();
for(int i=0;i<c.length;i++){
for(int j=count;j<i;j++){
if(c[i]==c[j]){
count=j+1;
break;
}
}
max=Math.max(max,i-count+1);
}
return max;
}
}
/*
1.遍历从起点到当前位置的字符(终点字符)
1.1 如果有字符跟当前字符相同
1.1.1 记录该字符位置,循环结束
1.1.2 终点字符后移一位,将起点位置设为重复处的下一位,重新比较
1.2 如果没有字符跟当前字符相同
1.2.1 当前最大子串长度为max(max,i-count+1)
2. 实质
直接求两个相同字符间字符串的长度,取其最大值
*/