【发布时间】:2019-02-15 13:36:42
【问题描述】:
我很少有像'hefg','dhck','dkhc','lmno' 这样的单词(字符串),它们将通过交换部分或全部字符转换为新单词,这样新单词在字典上大于原始单词,而且新单词也是最少的大于原词的词。
例如'dhck'
应该输出 'dhkc' 而不是 'kdhc','dchk' 或任何其他。
我有这些输入
hefg
dhck
dkhc
fedcbabcd
应该输出哪个
hegf
dhkc
hcdk
fedcbabdc
我已经尝试在 python 中使用此代码,它适用于除'dkhc' 和'fedcbabcd' 之外的所有代码。
我发现'fedcbabcd' 的第一个字符是最大值,所以它没有被交换。并且
我得到"ValueError: min() arg is an empty sequence"
我如何修改算法来修复这些情况?
list1=['d','k','h','c']
list2=[]
maxVal=list1.index(max(list1))
for i in range(maxVal):
temp=list1[maxVal]
list1[maxVal]=list1[i-1]
list1[i-1]=temp
list2.append(''.join(list1))
print(min(list2))
【问题讨论】:
-
你能解释一下
such that the new word is greater than the original吗? -
@yatu 我认为 OP 希望在字典上比原始单词“大一个”的排列,即所有排列的排序列表中原始单词之后的下一个。
-
按字典顺序,例如 'acdb' 大于 'abcd'