LeetCode 字節跳動(ByteDance)企業題庫算法之----無重複字符的最長子串

一、題目概述

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

示例:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章