題目:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/
要求:
給定一個字符串,請你找出其中不含有重復字符的 最長子串 的長度。
示例 1:
輸入: s = "abcabcbb"
輸出: 3
解釋: 因為無重復字符的最長子串是 "abc",所以其長度為 3。
示例 2:
輸入: s = "bbbbb"
輸出: 1
解釋: 因為無重復字符的最長子串是 "b",所以其長度為 1。
示例 3:
輸入: s = "pwwkew"
輸出: 3
解釋: 因為無重復字符的最長子串是 "wke",所以其長度為 3。
請注意,你的答案必須是 子串 的長度,"pwke" 是一個子序列,不是子串。
示例 4:
輸入: s = ""
輸出: 0
提示:
0 <= s.length <= 5 * 104
s 由英文字母、數(shù)字、符號和空格組成
leetcode submit region begin(Prohibit modification and deletion)
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
leetcode submit region end(Prohibit modification and deletion)
AC解析過程
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
if len(s) <=1:
return len(s)
left ,max_len = 0,0
hashtable={}
for right in range(len(s)):
cur= s[right]
if cur in hashtable:
if hashtable[cur] +1 >=left: #這里默認了元素值為 為{值:索引}
left = hashtable[cur] +1
hashtable[cur] = right #在重復位置做個標記
max_len= max(max_len,right -left +1) #比較上次字串長度和當前長度大小
return max_len
作者:vigilant-7amportprg
鏈接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/solution/jie-zhu-ha-xi-biao-de-xing-shi-jie-jue-z-5rq8/
來源:力扣(LeetCode)
著作權歸作者所有。商業(yè)轉載請聯(lián)系作者獲得授權,非商業(yè)轉載請注明出處。