s = [s.replace(z_a[i],a_z[i]) for i in range(26)]
在这里,您将创建26个字符串列表,它们中的每s
与修改的信。您不会按顺序执行替换,将每个替换应用于最后替换的结果。您将所有替代品应用于原始字符串并保留所有替代品的结果。
你可以使用一个循环,并确保更换作业序列化,但你会陷入另一个问题:第一次迭代时,a
将由z
被替换,但随后的最后一个期间,z
将被替换通过a
。
azb
- >zzb
- >zzy
- > - >zzb
- >aab
我想这是唯一的解决办法是循环输入字符串中的字符,而不是在字母字母。
从你身在何处,你可以创建一个转换字典:
conv = dict(zip(a_z, z_a))
那和关联a
与z
等等...
然后你可以使用列表解析获得的翻译每个字符:
result_as_chars = (conv[char] for char in s)
然后得到一个字符串,加入这些字符:
return ''.join(result_as_chars)
功能齐全:
def answer(s):
a_z = map(chr, range(ord('a'), ord('z')+1))
z_a = sorted(a_z, reverse=True)
conv_table = dict(zip(a_z, z_a))
result_as_chars = (conv_table[char] for char in s)
return ''.join(result_as_chars)
我希望这个答案可以帮助澄清你的东西。不过,不要考虑这个生产质量代码。我不确定这个算法是否是最好的,这个实现绝不是最优化的。
你的意思是你想'abc'变成'zyx',比如?请显示所需的输入/输出示例。 –
对不起,如果我不是很清楚。 输入“c mvevi,vevi nziph gsv hklg。” 输出“x从来没有,标志着现货。” –