遇到此错误时,我正在做一些编码面试问题。我正在尝试使用functools.cmp_to_key()函数来使用我的比较函数,但是当它到达排序步骤时,它会给我TypeError: '<' not supported between instances of 'str' and 'int'
。
请忽略我的代码可能无法正确解决问题的事实-我真的很好奇为什么会出现该错误。
from typing import List
import functools
def comparison(a: str, b: str):
print((a, b))
if len(a) == 0:
return b
elif len(b) == 0:
return a
elif a[0] < b[0]:
return a
elif a[0] > b[0]:
return b
else:
return comparison(a[1:], b[1:])
class Solution:
def largestNumber(self, nums: List[int]) -> str:
cmp = functools.cmp_to_key(comparison)
res = sorted([str(x) for x in nums], key=cmp, reverse=True)
return ''.join(res)
sol = Solution()
assert '232302' == sol.largestNumber([230, 23, 2])
编辑:这是使用Python 3.7.4 btw
答案 0 :(得分:0)
没关系,我只是意识到我在滥用cmp函数。应该返回-1、0或1,而不是我确定的最小元素。