leetcode3 無重複字符的最長子串

1.題目描述
給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。

示例 1:

輸入: "abcabcbb"
輸出: 3 
解釋: 因爲無重複字符的最長子串是 "abc",所以其長度爲 3。
示例 2:

輸入: "bbbbb"
輸出: 1
解釋: 因爲無重複字符的最長子串是 "b",所以其長度爲 1。
示例 3:

輸入: "pwwkew"
輸出: 3
解釋: 因爲無重複字符的最長子串是 "wke",所以其長度爲 3。
     請注意,你的答案必須是 子串 的長度,"pwke" 是一個子序列,不是子串。
2.解題思路
1.將字符串轉爲字符數組,便於處理;
2.關鍵在於每一次遍歷的起始位,從0開始,當碰到與指定字符重複時候,新的起始位變化爲重複位+1;
3.每一次比較結束,若新的長度大於原來長度,更新長度值;
3.code
 public static int lengthOfLongestSubstring2(String s) {
        int len = 0, left = 0, index = 0;
        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            for (int j = left; j < i; j++) {
                if (chars[j] == chars[i]) {
                    left = j + 1;
                    break;
                }
            }
            if (i - left + 1 > len) {
                len = i - left + 1;
                index = left;
            }
        }
        System.out.println(s.substring(index,index+len));
        return len;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章