在Python中,通过给定位置后移字符来获取最终字符串的程序
假设我们有一个小写字符串s和另一个名为shifts的整数列表,其长度与s的长度相同。在这里,shifts [i]中的每个元素表示将s的前i + 1个字母移位shifts [i]个位置。如果移位越过’z’,它将被卷起到’a’。我们必须找到应用移位到s后的结果字符串。
因此,如果输入为s =“tomato”shifts = [2,5,2,3,7,4],则输出将是“qjcoes”因此,将第一个字符移位2个位置后,它将是’t’变成’v’,因此字符串为“vomato”,在此之后的前两个字符5个位置。现在字符串将是“atmato”,就是这样最终字符串将是“qjcoes”。
要解决此问题,我们将按照以下步骤执行 –
- start:ASCII“a”
- res:一个ASCII的列表,其中每个i在s中
- 对于i in range size of shifts – 2 to 0,请减少1
- shifts [i]:= shifts [i] + shifts [i + 1]
- 对于i in range 0 to size of s-1,进行操作
- c:=(res [i] + shifts [i])mod 26
- res [i]:= ASCII(c + start)的字符
- 将字母res连接成字符串并返回
例子
让我们看一下以下实现,以获得更好的理解:
def solve(s, shifts):
start = ord("a")
res = [ord(i) - start for i in s]
for i in range(len(shifts) - 2, -1, -1):
shifts [i] + = shifts [i + 1]
for i in range(len(s)):
c = (res [i] + shifts [i])%26
res [i] = chr(c + start)
return""。join(res)
s =“tomato”
shifts = [2,5,2,3,7,4]
print(solve(s,shifts))
输入
[2,1],3,2
输出
qjcoes