【发布时间】:2019-06-18 02:28:51
【问题描述】:
问题
有一个词。我们需要找到按字典顺序出现的下一个单词。例如,如果单词是lkjihfg,那么下一个单词就是lkjihgf。
这是 Hackerrank 的一个问题,您可以看到 here。 问题供参考:
在下面的编辑器中完成更大的IsGreater 函数。它应该 从 给定字符串或没有答案。
我的努力
我尝试的是找到单词的最大索引(比如indx),这样之后所有字符都不会增加。然后将indx处的字符与大于char的最小字符交换在indx。最后,将indx之后的字符串反转。
代码
def biggerIsGreater(w):
ww = list(set(w))
indx = -1
l = [ord(ch)for ch in w]
for i in range(len(l)-1):
if l[i] < l[i+1]:
indx = i
else:
continue
if indx == -1:
return "no answer"
j = len(l) - 1
for x in range(j,indx,-1):
if l[x] > l[indx]:
l[x], l[indx] = l[indx], l[x]
break
l[indx+1 : ] = l[len(l) - 1 : indx : -1]
y = []
for z in l:
y.append(chr(z))
ans = ''.join(y)
return ans
这段代码的问题在于它没有通过所有的测试用例,因为它产生了错误的结果。
【问题讨论】: