我正在尝试比较并查看字符串中是否存在特定字符,但是当我尝试访问另一个字符串中的字符时,它会抛出错误“ int类型的参数不可迭代”。如何在不引起错误的情况下从字符串访问字符?
def lengthOfLongestSubstring(self, s: str) -> int:
longStrLen = 0
totalStrLen = len(s)
holderString = ""
holderString += s[0]
longStrLen = 0
for i in range(1,totalStrLen-1):
if s[i] not in holderString:
holderString += s[i]
else:
if longStrLen < len(holderString):
longStrLen = len(holderString)
holderString = 0
return longStrLen
TypeError: argument of type 'int' is not iterable at Line
if s[i] not in holderString:
答案 0 :(得分:3)
您的问题在这条线上:
holderString = 0
您将holderString
变量重新分配为整数0。虽然可以迭代字符串,但不能整数。您尝试遍历此行上的新整数:
if s[i] not in holderString:
这会导致错误。
有一种更好的方法来处理返回第一个重复字符的函数。只需使用index()
方法:
def findChar(char, string):
for c in string:
if c == char:
return string.index(c)
答案 1 :(得分:0)
看来,您只需要计算唯一字符,直到找到第一个重复字符。您可以使用一套餐具。
def longest_substring(s: str) -> int:
seen = set()
for c in s:
if c in seen:
break
seen.add(c)
return len(seen)