3. 無重複字元的最長字串Leetcode
阿新 • • 發佈:2018-12-21
文章目錄
題目描述
給定一個字串,找出不含有重複字元的最長子串的長度。
示例 1:
輸入: “abcabcbb”
輸出: 3
解釋: 無重複字元的最長子串是 “abc”,其長度為 3。
示例 2:
輸入: “bbbbb”
輸出: 1
解釋: 無重複字元的最長子串是 “b”,其長度為 1。
示例 3:
輸入: “pwwkew”
輸出: 3
解釋: 無重複字元的最長子串是 “wke”,其長度為 3。
請注意,答案必須是一個子串,“pwke” 是一個子序列 而不是子串。
思路及解答
/*
* 思路:
* 從字串的每一個位置開始構造字串,並逐漸增大字串的長度
* 如果遇到之前出現過的字元,則從這個字元開始重新構建字串
* 比較每次構建字串的長度,保留最長的那個長度作為返回值
*/
class Solution {
public int lengthOfLongestSubstring(String s) {
int num = 0;//記錄最長字串長度
int current = 0;//記錄當前字串長度
char[] arr = s.toCharArray();//將字串轉化為字串陣列
List<Character> tmp = new ArrayList<Character>();//存放構造的字元
for(int i = 0; i < arr.length; i++){
for(int j = i; j < arr.length; j++){
if(!tmp.contains(arr[j])){
tmp.add(arr[j]);
current = tmp.size();
if(num < current)
num = current;
}else{
tmp. clear();
break;//跳出當前迴圈
}
}
}
return num;
}
}