python找最长的字符串_在字符串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元素。我想我做了一些愚蠢的事,但我看不出是什么,所以請給我一些指導!我覺得我要踢自己的答案。。。在
我的輸出開始:
^{pr2}$
編輯:
我將for循環替換為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']
...
總結
以上是生活随笔為你收集整理的python找最长的字符串_在字符串python中查找最长的唯一子字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 逗号运算符_Java 运算符
- 下一篇: Java两个列表根据属性去重_java8