因此,我收到了一个挑战,陈述如下:“设计一个程序,输入一个9位数字,其中没有数字出现两次,并输出对应于下一个最高数字的相同9位数字作为输出。如果不存在这样的数字, ,算法应指出这一点。例如,如果输入为781623954,则输出为781624359。”
因此,我想到了翻转索引的想法,因此请检查一下最后一个索引是否正确,然后比较,然后在需要时翻转,但由于某些原因我的代码无法正常工作。我只检查最后两位数字而不是全部数字,因此,如果您可以帮助我并为我检查一下,并且您对解决此问题有更好的想法,请分享。
input = raw_input("Enter 9 Digits: ") x = 9 while x>0: x-=1 if input[8] > input[7]: temp = input[8] input[8] == input[7] input[7] == temp print input break
我不确信您会使用翻转数字的方法来保证找到 下一个 最高的数字(至少在没有进一步检查的情况下)
这是一个简单的解决方案:只需增加输入数字并检查是否满足条件或找不到数字。
set() 可用于获取数字中唯一的一组数字。
set()
input_num = '781623954' next_num = int(input_num) + 1 input_digits = set(input_num) found = False while not found: next_num += 1 next_digits = set(str(next_num)) found = len(next_digits) == 9 and input_digits == next_digits if next_num > 987654321: break if found: print(next_num) else: print("No number was found.")