Leetcode 上的一道题
无重复字符的最长子串
给定一个字符串,找出不含有重复字符的最长子串的长度。
示例:
给定 "abcabcbb"
,没有重复字符的最长子串是 "abc"
,那么长度就是3。
给定 "bbbbb"
,最长的子串就是 "b"
,长度是1。
给定 "pwwkew"
,最长子串是 "wke"
,长度是3。请注意答案必须是一个子串,"pwke"
是 子序列 而不是子串。
思路:从左到右遍历,用临时字符串cur保存当前读到的串,indexOf函数判断是否重复,有则根据返回值裁剪字符串,继续操作
代码:
class Solution {
public static int lengthOfLongestSubstring(String s) {
int start = 0;
int max = 0;
String cur = "";
for(int i=0;i<s.length();i++){
if(cur.indexOf(s.charAt(i))!=-1){
if(cur.length()>max){
max = cur.length();
}
int pos = cur.indexOf(s.charAt(i));
cur = s.substring(start+pos+1, i+1);
start = start + pos +1;
}else{
cur += s.charAt(i);
}
}
return max>cur.length()?max:cur.length();
}
}