str和int实例之间不支持类型错误'<'

时间:2019-11-09 04:55:04

标签: python

我正在研究这个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

1 个答案:

答案 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'