1. 程式人生 > >3. 無重複字元的最長字串Leetcode

3. 無重複字元的最長字串Leetcode

文章目錄

題目描述

給定一個字串,找出不含有重複字元的最長子串的長度。

示例 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; } }