我正在嘗試找到不包含重複字符的字符串中最長的子字符串的年齡老問題(有大量的版本)。我不明白爲什麼我的努力工作不正常:在字符串python中查找最長的唯一子字符串
def findLongest(inputStr):
resultSet = []
substr = []
for c in inputStr:
print ("c: ", c)
if substr == []:
substr.append([c])
continue
print(substr)
for str in substr:
print ("c: ",c," - str: ",str,"\n")
if c in str:
resultSet.append(str)
substr.remove(str)
else:
str.append(c)
substr.append([c])
print("Result set:")
print(resultSet)
return max(resultSet, key=len)
print (findLongest("pwwkewambb"))
當我的輸出獲取到第二「W」,它不會遍歷所有的SUBSTR元素。我認爲我做了一些愚蠢的事情,但我不明白它是什麼,所以一些指導將不勝感激!我覺得我要踢自己的答案...
我開頭輸出:
編輯:
我更換了與循環
for idx, str in enumerate(substr):
print ("c: ",c," - str: ",str,"\n")
if c in str:
resultSet.append(str)
substr[idx] = []
else:
str.append(c)
它會產生正確的結果。唯一的是空元素數組被設置爲下一個字符。這似乎有點毫無意義;一定會有更好的辦法。
我的預期產出是kewamb。
例如
c: p
c: w
[['p']]
c: w - str: ['p']
c: w
[['p', 'w'], ['w']]
c: w - str: ['p', 'w']
c: w - str: ['w']
c: k
[[], [], ['w']]
c: k - str: []
c: k - str: []
c: k - str: ['w']
c: e
[['k'], ['k'], ['w', 'k'], ['k']]
c: e - str: ['k']
c: e - str: ['k']
c: e - str: ['w', 'k']
c: e - str: ['k']
...
'substr.remove(STR)':這樣做而迭代很不好 –
啊?不知道。我曾嘗試過使用str = [],但這並沒有起作用,所以開始使用刪除 – dgBP
我想這是錯誤的方式 - 是否有更直觀的解決方案? – dgBP