你好呀?
我是然怡
題目來源:力扣(LeetCode)
1
無重復(fù)字符的最長子串
給定一個字符串,請你找出其中不含有重復(fù)字符的最長子串 的長度阳似。
示例 1:
輸入: s = "abcabcbb"
輸出: 3?
解釋: 因為無重復(fù)字符的最長子串是 "abc"怒医,所以其長度為 3蹦渣。
示例 2:
輸入: s = "bbbbb"
輸出: 1
解釋: 因為無重復(fù)字符的最長子串是 "b"怕敬,所以其長度為 1睁蕾。
示例 3:
輸入: s = "pwwkew"
輸出: 3
解釋: 因為無重復(fù)字符的最長子串是 "wke"柒凉,所以其長度為 3.
請注意族阅,你的答案必須是子串的長度,"pwke" 是一個子序列膝捞,不是子串坦刀。
示例 4:
輸入: s = ""
輸出: 0
提示:
0 <= s.length <= 5 * 104
s 由英文字母、數(shù)字绑警、符號和空格組成
2
通過代碼1(自己寫)
通過代碼2(參考)
3
總結(jié)
1
我的思路簡單暴力:
兩層for循環(huán)求泰,把字符串轉(zhuǎn)為列表后,依次遍歷每一個列表元素计盒,在里層循環(huán)中如果出現(xiàn)相同的字母渴频,則跳出循環(huán),記錄以該元素為第一個字母的長度北启,保存在count列表中卜朗。
再計算以下一個字母開頭的滿足條件的最長長度,依次循環(huán)記錄咕村。
最后如果count列表不為零則輸出count列表的最大值场钉,否則輸出0。
2
看了別人的代碼懈涛,感覺我的代碼太low了逛万。
首先用了enumerate()函數(shù),這個函數(shù)可以循環(huán)遍歷字符串或列表的索引和對應(yīng)的元素批钠。
再使用字典宇植,因為字典的key值是唯一的得封,所以如果元素已經(jīng)在字典中,則將left(記錄最長字符串的最左邊的元素坐標(biāo))+1指郁,再用字典記錄當(dāng)前位置忙上。妙啊~