python古典アルゴリズム問題:重複文字のない最長男列
1473 ワード
タイトル:重複文字のない長男列.
文字列を指定すると、重複文字が含まれていない長男の列の長さを見つけてください.
例1:
入力:“abcabcbb”出力:3解釈:重複文字のない最長男列は“abc”であるため、その長さは3である.例2:
入力:「bbbbb」出力:1解釈:重複文字のない長男列は「b」であるため、その長さは1である.例3:
入力:「pwwkew」出力:3解釈:重複文字のない長男列は「wke」であるため、その長さは3である.
あなたの答えはサブストリングの長さでなければなりません.「pwke」はサブストリングであり、サブストリングではありません.
解法1:一般的な考え方
解法2:神仙の考え方(ネットで見た)
変換元:https://www.cnblogs.com/duanming/p/11830278.html
文字列を指定すると、重複文字が含まれていない長男の列の長さを見つけてください.
例1:
入力:“abcabcbb”出力:3解釈:重複文字のない最長男列は“abc”であるため、その長さは3である.例2:
入力:「bbbbb」出力:1解釈:重複文字のない長男列は「b」であるため、その長さは1である.例3:
入力:「pwwkew」出力:3解釈:重複文字のない長男列は「wke」であるため、その長さは3である.
あなたの答えはサブストリングの長さでなければなりません.「pwke」はサブストリングであり、サブストリングではありません.
解法1:一般的な考え方
class Count:
def __init__(self):
self.curLength = 0
def compare(self, temp: str):
lens = len(set(temp))
if lens != len(temp):
return False
else:
self.curLength = lens
return True
def circulation(self, s: str):
flag = False
length_s = len(s) # 8
temp = ""
j = 0
while j + self.curLength < length_s: # 1+0<8
temp = s[j:j + self.curLength + 1] # temp = "a"
if self.compare(temp): # tem
continue
else:
j += 1
return self.curLength
解法2:神仙の考え方(ネットで見た)
class Solution:
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
st = {}
i, ans = 0, 0
for j in range(len(s)):
if s[j] in st:
i = max(st[s[j]], i)
ans = max(ans, j - i + 1)
st[s[j]] = j + 1
return ans
変換元:https://www.cnblogs.com/duanming/p/11830278.html