假设我们有两个字符串S和T,我们必须检查相同长度的字符串是否在字典上大于S且小于T。如果没有这样的字符串,则必须返回-1。我们必须谨记,只要存在i,S = S1S2…Sn在字典上就小于T = T1T2…Tn,因此S1 = T1,S2 = T2,... Si – 1 = Ti – 1, Si <钛
因此,如果输入类似于S =“ bbb”和T =“ ddd”,则输出将为“ bbc”
为了解决这个问题,我们将遵循以下步骤-
n:=字符串大小
对于范围在n-1到0的i,减1,
k:=(string [i])的ASCII
string [i]:= ASCII中的字符(k +1)
加入字符串字符并返回
如果string [i]与“ z”不同,则
字符串[i]:='a'
让我们看下面的实现以更好地理解-
def find_next(string): n = len(string) for i in range(n - 1, -1, -1): if string[i] != 'z': k = ord(string[i]) string[i] = chr(k + 1) return ''.join(string) string[i] = 'a' S = "bbb" T = "ddd" S = list(S) res = find_next(S) if res != T: print(res) else: print(-1)
"bbb", "ddd"
输出结果
bbc