|
发表于 2019-11-23 17:10:14
|
显示全部楼层
之前那个还没过审,但是我自己发现毛病了,又没办法编辑,所以重新发了这么一楼
- def solve(num:int)->int:
- temp = str(num)
- if list(temp) == sorted(temp):
- return -1#没有再小的了
- encode = lambda iteritor : [iteritor.count(x) for x in '0123456789']
- begin = encode(temp)
- if begin.count(0) == 9 or (begin[1:].count(0)==8 and max(begin[1:])==1):
- return -1
- n = (10 ** (len(temp)-1))*int(temp[0])
- while n:# and num:
- num -= 1
- if encode(str(num)) == begin:
- return num
- n -= 1
- else:
- return -1#首位不得不为 0
- if __name__ == '__main__':
- print('示例1 12 输出:',solve(21))
- print('示例2 513 输出:',solve(531))
- print('示例3 -1 输出:',solve(135))
- print('别人错的 1234567890 输出:',solve(1234567908))
- print('别人错的 790 输出:',solve(907))
- print('自测 -1 输出:',solve(1012))
复制代码 |
|