天天看點

LeetCode: 3_Longest Substring Without Repeating Characters | 求沒有重複字元的最長子串的長度 | Medium

題目:

解題思路:

  這個題讓找一個字元串中具有不重複單詞的最長子串的長度,如:ababc,子串為abc,長度為3。有這麼幾個方法:

方法一:

  依賴字元串本身的一些特有函數,進行相應操作來完成。我們可以維護一個子串,來儲存最長的無重複的子串,并記錄目前子串的長度,如果遇到重複的字元,則去掉子串中重複的字元,一次進行下去,最終就能找到最長無重複子串。如str = ababc, substr = a, ab, ba, ab, abc....類似這樣的思路。如下代碼:

方法二:

  指針法:用一個指針指向字元串的左邊界,如果遇到重複的字元,就往後移動,同時用一個有26位的字元數組(因為總共就26個字元)來儲存每一個字元最近一次出現的位置,以此來更新指針位置和字元位置之間的距離,就可以算出最長無重複字元的長度,如下代碼所示:

方法三:

  hashtable法:該方法和方法二其實是同一個思路,隻不過該方法我不用數組來存字元的位置,而是通過hashtable來存,進而提高效率。如下代碼:

繼續閱讀