求字串中不含重複字元的最長子串

2021-09-26 14:02:36 字數 817 閱讀 5861

今天逛脈脈,在上面看到乙個求字串中不含重複字元的最長子串,如果突然看到這個題,當時真的是寫不出,更何況最優解了,這個題以前出去面試的時候被考到過,當時也沒有寫出來,所以在網上看了這道題的答案後自己試著寫了下,並將自己的理解記錄下來

總體思路:

1.設定兩個游標,一左一右,剛開始都設定成0,設定乙個set,用來存放不含重複字串的子字串;

2.從零的位置開始遍歷字串,如果set裡面不含這個字元就將這個字元放入set中,右游標右移一位,通過左右游標獲取最長的字串,最後一次出現的就是所求的不重複最長子字串

3.如果遍歷的字元已經存在set中了,那就啟動左游標,找到重複字元第一次出現的位置,在尋找的過程中,將重複字元第一次出現的位置之前的字元都去掉,只到找到將重複字元第一次出現的位置後,再啟動右游標開始擴充

public static int getmaxlength(string str)

}else

}return maxlength;

}

public static void main(string args) throws exception
輸出結果:

最大子字串:a

最大子字串:ab

最大子字串:abc

最大子字串:bqwe

最大子字串:bqwer

最大子字串:bqwert

最大子字串:bqwerty

最大子字串:bqwertyk

最大子字串:bqwertyko

最長長度是:9

不含重複字元的最長子串

問題描述 給定乙個字串,找到最長的不含重複字元子串。例如,abcabccc 最長不含重複字元的子串為 abc 長度為3。對於 bbbbb 最長的子串為 b 長度為1。解決思路 滑動視窗 維護乙個不包含重複字元 視窗 從左到右掃瞄字串,每當加乙個新字元時,檢查該字元是否存在於 視窗 中,如果不存在則將...

求最長不含重複字元的子字串

題目 最長不含重複字元的子字串 請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。假設字串中只包含從 a 到 z 的字元。例如,在字串中 arabcacfr 最長非重複子字串為 acfr 長度為4。解題思路一 暴力破解法,遍歷所以的子字串,判斷其中的不重複的子字串 解題思路二 ...

不含有重複字元的最長子串

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