我正在研究这个leetcode问题: “平衡字符串是指具有相同数量的'L'和'R'字符的字符串。 给定一个平衡字符串s,它将拆分为最大数量的平衡字符串。 返回拆分后的平衡字符串的最大数量。”
当我将程序放入pycharm时,该程序符合并且没有错误,它也符合和通过Leetcode的所有测试用例。尽管我提交时说:“第15行:Type错误:在'str'和'int'实例之间不支持'<'” 我对出什么问题感到困惑?
class Solution:
def balancedStringSplit(self, s: str) -> int:
count = 0
countL = 0
countR = 0
i = 1
while i < len(s):
if s[i] != s[(i + 1) <= len(s)]:
count += 1
i += 2
else:
for x in range(len(s[i::])):
if s[x] == s[x + 1 < len(s[i::])]:
countL += 1
if s[x] == s[x + 1] < len(s[i::]):
countR += 1
if countR == countL:
count += 1
else:
break
i +=1
return count
答案 0 :(得分:1)
您在下面使用的第一种语法是正确的,但是由于1]后的括号,第二种语法将字符串与int进行比较。我不认为您会遇到错误,因为似乎很少调用其他方法。
if s[x] == s[x + 1 < len(s[i::])]:
countL += 1
if s[x] == s[x + 1] < len(s[i::]):
countR += 1
在此示例中,由于1后面的方括号使它成为与int比较的字符串,因此调用类型错误:
In [207]: ss.balancedStringSplit('12','11111')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-207-4754b9274cc7> in <module>
----> 1 ss.balancedStringSplit('12','11111')
<ipython-input-182-c55d872d7f41> in balancedStringSplit(self, s)
13 if s[x] == s[x + 1 < len(s[i::])]:
14 countL += 1
---> 15 if s[x] == s[x + 1] < len(s[i::]):
16 countR += 1
17 if countR == countL:
TypeError: '<' not supported between instances of 'str' and 'int'