public class Solution {
/**
* 思想:维护两个下标start,end,start从0开始,end从1开始
* 两个指针一直向后遍历,先截取子串,并记录下最大子串的长度,然后再进行比较,
* 移动start以及end指针,其中end指针一直加,start指针只有当出现相同字符才往前移动。
* 注:substring截取子串时是半开闭区间的[start,end),保证了每次截取的子串都没有包含重复的字符
*/
public int lengthOfLongestSubstring(String s) {
if(s == null || s.length() == 0){
return 0;
}
if(s.length() == 1){
return 1;
}
int start =0;
int end = 0;
String subStr = "";
int max = 0;
for(int i = 0; i < s.length(); i++){
end = i + 1;
subStr = s.substring(start,end);
max = max < subStr.length() ? subStr.length() : max;
if(end == s.length()){
break;
}
int index = subStr.indexOf(s.charAt(end));
if(index !=-1){
start += (index + 1);
}
}
return max;
}
}
Longest Substring Without Repeating Characters
最新推荐文章于 2024-09-28 10:34:40 发布