一、題目概述
給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。
示例:
示例1:
輸入: "abcabcbb"
輸出: 3
解釋: 因爲無重複字符的最長子串是 "abc",所以其長度爲 3。
示例2:
輸入: "bbbbb"
輸出: 1
解釋: 因爲無重複字符的最長子串是 "b",所以其長度爲 1。
二、解決方法
雙指針法
class Solution {
public int lengthOfLongestSubstring(String s) {
//定義兩個指針
int flag = 0;
int p = 0;
//無重複的最長子串的長度
int maxlength = 0 ;
//定義每次出現重複字符之前最大的長度
int len = 0 ;
while(p < s.length()){
int index = s.indexOf(s.charAt(p),flag);
if(index<p){
if(maxlength>len) len = maxlength;
if(len > (s.length()-1-index)) return len;
maxlength = p - index - 1;
flag = index + 1;
}
maxlength++;
p++;
}
return maxlength;
}
}