leetcode 劍指 Offer 48. 最長不含重複字元的子字串
題目描述:
請從字串中找出一個最長的不包含重複字元的子字串,計算該最長子字串的長度。
思路:
1、每次重複的片段命名為split,關鍵是要更新split
2、split的取值是從上次重複位置的第二個開始取值
3、返回anslist里長度最大的split
程式碼:
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
if len(s) < 2:#s可能為空字串或者只包含一個字元的字串
return len(s)
spit = ''
anslist = []
i = 0
while i < len(s): #這是跳出大迴圈的條件
while i < len(s) and s[i] not in spit:#split的條件按
spit += s[i]
i += 1
anslist.append(spit)
if i < len(s):
re_position = spit.find(s[i])
if re_position != -1:#如果能找到重複的位置
spit = spit[re_position+1:]#如果是最後一個位置,那麼split為空
ans = max([0] + [len(x) for x in anslist])#[0]的意思是,可能為空字串或者全為空格的字串
return ans
收穫:
1、find函式的用法
2、簡便的返回ans,而不用再開一個陣列
相關文章
- 劍指 Offer 48. 最長不含重複字元的子字串字元字串
- 最長不含重複字元的子字串字元字串
- 求字串中不含重複字元的最長子串字串字元
- JZ-073-最長不含重複字元的子字串字元字串
- LeetCode——無重複字元的最長子串LeetCode字元
- leetcode 之無重複字元的最長子串LeetCode字元
- 【LeetCode】3 無重複字元的最長子串LeetCode字元
- 無重複字元的最長子串字元
- 【leetcode】【java】【3、無重複字元的最長子串】LeetCodeJava字元
- leetcode-3無重複字元的最長子串LeetCode字元
- LeetCode-3. 無重複字元的最長子串LeetCode字元
- Leetcode 3. 無重複字元的最長子串LeetCode字元
- leetcode無重複字元的最長字串 python實現LeetCode字元字串Python
- 每日leetcode——3. 無重複字元的最長子串LeetCode字元
- java無重複字元的最長子串Java字元
- 3 無重複字元的最長子串字元
- Leetcode[字串] 3. 無重複字元的最長子串 10行極簡寫法!LeetCode字串字元
- 劍指Offer 字元流中第一個不重複的字元字元
- 3. 無重複字元的最長子串字元
- 【劍指offer】字串的排列字串
- LeetCode133:給定一個字串,找出最長的不具有重複字元的子串的長度。例如,“abcabcbb”不具有重複字元的最長子串是“abc”,長度為3。對於“bbbbb”,最長的不具有重複字元的子串是LeetCode字串字元
- [LeetCode 刷題] 3. 無重複字元的最長子串 (Medium)LeetCode字元
- #leetcode刷題之路3-無重複字元的最長子串LeetCode字元
- 《劍指offer》:[55]字元流中第一個不重複的字元字元
- Leetcode 劍指 Offer 03. 陣列中重複的數字LeetCode陣列
- 演算法-無重複字元的最長子串演算法字元
- 【劍指offer】【2】字串的空格字串
- 【劍指offer】字串的組合字串
- 【劍指offer】左旋轉字串字串
- 劍指Offer--陣列中重複的數字陣列
- 《劍指offer》:[51]陣列中的重複數字陣列
- [LeetCode] Longest Substring Without Repeating Characters 最長無重複字元的子串LeetCode字元
- 【LeetCode】424. 替換後的最長重複字元LeetCode字元
- 【劍指offer】刪除在另一個字串中出現的字元字串字元
- Leetcode 3.無重複字元的最長子串 字典記錄每個字元最後出現的位置LeetCode字元
- (字串雜湊表)找到字串中不重複出現字元的最長子串長度字串字元
- 劍指 Offer 38. 字串的排列字串
- 劍指Offer 表示數值的字串字串