題目:
解題思路:
這個題讓找一個字元串中具有不重複單詞的最長子串的長度,如:ababc,子串為abc,長度為3。有這麼幾個方法:
方法一:
依賴字元串本身的一些特有函數,進行相應操作來完成。我們可以維護一個子串,來儲存最長的無重複的子串,并記錄目前子串的長度,如果遇到重複的字元,則去掉子串中重複的字元,一次進行下去,最終就能找到最長無重複子串。如str = ababc, substr = a, ab, ba, ab, abc....類似這樣的思路。如下代碼:
方法二:
指針法:用一個指針指向字元串的左邊界,如果遇到重複的字元,就往後移動,同時用一個有26位的字元數組(因為總共就26個字元)來儲存每一個字元最近一次出現的位置,以此來更新指針位置和字元位置之間的距離,就可以算出最長無重複字元的長度,如下代碼所示:
方法三:
hashtable法:該方法和方法二其實是同一個思路,隻不過該方法我不用數組來存字元的位置,而是通過hashtable來存,進而提高效率。如下代碼: