LeetCode無重複字元的最長子串Swift

2022-06-14 15:27:10 字數 1473 閱讀 8416

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。

示例 1:

輸入: "

abcabcbb

"輸出:

3解釋: 因為無重複字元的最長子串是

"abc

",所以其長度為 3。

示例 2:

輸入: "

bbbbb

"輸出:

1解釋: 因為無重複字元的最長子串是 "b

",所以其長度為 1。

示例 3:

輸入: "

pwwkew

"輸出:

3解釋: 因為無重複字元的最長子串是

"wke

",所以其長度為 3

。 請注意,你的答案必須是 子串 的長度,

"pwke

" 是乙個子串行,不是子串。

解法:curstr陣列做臨時的儲存,當碰到重複字元,刪除此字元在陣列之前所有字元,包括本身。

每次需要重複判斷下是否是最大長度

class

solution

var maxstr =string()

var curstr =string()

forcharins

char

)

if(curstr.count >maxstr.count)

}return

maxstr.count

}}

解題思路:

1、遍歷字串

2、判斷陣列裡面能否查詢到當前字元,查到的話,重新計算maxcount,然後把陣列當前位置前面的元素刪掉,然後插入當前元素

class

solution

char

) }

return

max(maxcount, array.count)

}}

滑動視窗原理(目前最優)

視窗法,區間取值;

右區間(end)值恆增加(向右走);

左區間(start)值停留,若出現相等則取下一位(end + 1);

最後返回區間長度(ans).

class

solution

var kv =[character : int]()

var start = 0, end = 0, ans = 0

for item in

s

//記錄字元在原字串的位置

kv[item] =end

//記錄不同字元最大長度

ans = max(end - start + 1

, ans)

end += 1

}

return

ans }

}

LeetCode第3題題解 無重複字元的最長子串

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

LeetCode刷題實戰3 無重複字元的最長子串

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

leetcode刷題之路3 無重複字元的最長子串

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。字元陣列和字串的區別,c語言字元陣列和字串區別詳解 開始的想法是在對字元陣列設定兩個指標,初始化乙個在位置0乙個在位置1,ans初始化...