leetcode-重複文字のない最長男列(python)
935 ワード
タイトル:文字列を指定します.重複文字が含まれていない長男列の長さを見つけてください.
例1:
入力:“abcabcbb”出力:3解釈:重複文字のない最長男列は“abc”であるため、その長さは3である.
例2:
入力:「bbbbb」出力:1解釈:重複文字のない長男列は「b」であるため、その長さは1である.
例3:
入力:「pwwkew」出力:3解釈:重複文字のない長男列は「wke」であるため、その長さは3である.あなたの答えはサブストリングの長さでなければなりません.「pwke」はサブストリングであり、サブストリングではありません.コード:
例1:
入力:“abcabcbb”出力:3解釈:重複文字のない最長男列は“abc”であるため、その長さは3である.
例2:
入力:「bbbbb」出力:1解釈:重複文字のない長男列は「b」であるため、その長さは1である.
例3:
入力:「pwwkew」出力:3解釈:重複文字のない長男列は「wke」であるため、その長さは3である.あなたの答えはサブストリングの長さでなければなりません.「pwke」はサブストリングであり、サブストリングではありません.コード:
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
dict={}
begin=0
result=0
word=[]
for i in range(len(s)):
if s[i] not in dict or dict[s[i]]==0:
dict[s[i]]=1
word.append(s[i])
result=max(result,len(word))
else:
dict[s[i]]+=1
while dict[s[i]]>1:
dict[s[begin]]-=1
begin+=1
word=[]
for j in range(begin,i+1):
word.append(s[j])
return result