1. 程式人生 > >【LeetCode】3.Longest Substring Without Repeating Characters 無重複字元的最長子串

【LeetCode】3.Longest Substring Without Repeating Characters 無重複字元的最長子串

輸入: "pwwkew"
輸出: 3
解釋: 無重複字元的最長子串是 "wke",其長度為 3。
     請注意,答案必須是一個子串"pwke" 是一個子序列 而不是子串。

解題思路:

本題沒什麼難點。

lenth = 0
prevLoc = 0
i = 0
maxI = len(s)
while i < maxI:
    if s[i] in s[prevLoc:i]:
        newLenth = i - prevLoc
        if newLenth > lenth:
            lenth = newLenth
            # print(s[prevLoc:i])
        prevLoc = prevLoc + s[prevLoc:i].index(s[i]) + 1
    i += 1
newLenth = i - prevLoc
if newLenth > lenth:
    lenth = newLenth
    # print(s[prevLoc:i])
return lenth

84 ms,打敗了87.41%的對手。

瀏覽了下官方示例程式碼,用了很多Java特有的東西...理解起來有點麻煩[扶額]
由於Java不能像Python這樣把字串理解成字元陣列....哎?為啥不能...我記得有char[]....也許是速度沒有HashMap或HashSet快?
所以,Python處理起來比較方便。

值得一提的是,示例程式碼最後使用的是:把字元轉ASCII,然後存入int陣列的方式,令人眼前一亮..