LeetCode Longest Substring Without Repeating Characters
題意
Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest substring is "b", with the length of 1.
簡單來說就是找出最長不重復子串。比如abcb的最長不重復子串是abc,bbb的最長不重復子串是b
題解
1. O(N2)的解法
第一時間想到的就是這種,還是太弱。。。
思路是對于每個位置,都以它為子串的起點向后遍歷一次,遇到有重復的就break,然后返回最長的那個。用一個hash表來記錄有沒有訪問過。
2. O(N)的解法
參考了這篇介紹,雖然是英文但是感覺寫得很思路很清晰的樣子。希望有一天我的思路也能如此清晰。
思路是利用一個額外的空間來保存已經訪問過的字符的位置。
首先從左到右掃描整個字符串,同時記錄目前所遇到的最長不重復子串,記它的長度為max_len.當掃描的時候,對于每一個遇到的新字符,首先判斷它有沒有被訪問過(利用一個visited數組來判斷),如果沒有,那么直接把max_len的長度加1,然后將這個字符標記為訪問過,同時記錄它的位置。如果之前被訪問過,那么就有下面兩種情況:
轉載于:https://www.cnblogs.com/xz816111/p/5338209.html
總結
以上是生活随笔為你收集整理的LeetCode Longest Substring Without Repeating Characters的全部內容,希望文章能夠幫你解決所遇到的問題。