LetCode 無重複字元的最長子串

2021-09-10 08:30:26 字數 1386 閱讀 5294

這個演算法自己寫了半天,太多bug了,比如說無限迴圈啊什麼的,平時自己在演算法上面下的功夫還是太少,編碼思維沒形成,下面來看下這個題目吧

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

示例 1:

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

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

輸入:"pwwkew"輸出:3解釋:因為無重複字元的最長子串是"wke",所以其長度為 3。

請注意,你的答案必須是子串的長度,"pwke"是乙個子串行,不是子串。

下面說下思路,剛拿到這個題目的時候自己想起了大名鼎鼎的kmp演算法,跟這個題目有許多相同之處,最簡單直接的方法是將整個字串的子字串都遍歷一遍找出最長的那一串,不過這樣演算法複雜度太大,不予採用,所以便想到了優化,具體思路可以去看letcode上的優化的滑動視窗演算法,本文實現的原理與其相同,下面是**

class solution 

else

}if(a==s.length()-1)

if(s.length()-index具體思路等我有時間再詳解,不過我這個**講道理應該是優化的很不錯的演算法了,但是在提交的時候仍然會耗費很多時間,原因就在於**中包含大量string字串的拼接,花費時間極多,看了下優秀答案是使用hashmap來做這樣會提高效率,以後要注意。不過我這個演算法可以求出最大無重複子字串的內容,這是hashmap無法做到的,因為hashmap是無序儲存,這樣想想還是挺有用的。

以後繼續加強演算法的訓練,2019自己要做到letcode上至少刷100道題目,目標200,最好150,保底100.

我又來優化我的演算法了,去掉了字串疊加的過程,改為使用兩個索引相減來確定子字串的長度,比上段**提公升了接近300ms,雖然還是很差,這是我的使用的基礎架構決定的,因為使用的純字串知識所以呼叫函式時會花費很多時間,不過感覺還是蠻有意思的。

class solution

}if(a==s.length()-1)

}return max;

}}

letcode3 無重複字元的最長子串(加油)

題目 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出...

無重複字元的最長字串

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...

無重複字元的最長字串

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 這種字串字串問題,經常用到滑動...