用递归将字符串字符翻倍



假设我有字符串"my name is",如何递归返回字符串"my name name is"?

你可以这样做

def double(s):
out = ''
for letter in s:
out=out+s+s
return out

INPUT:print(double("hello"))
OUTPUT:hheelllloo

下面的内容很简单。将第一个字母翻倍,然后递归调用其余的字母。基本大小写:空字符串:

def double(s):
if not s:
return s
return 2 * s[0] + double(s[1:])
double("my name is")
# 'mmyy  nnaammee  iiss'

请注意,递归方法的重复切片和另一个答案的重复字符串连接使两个解在时间复杂度上都是二次的。在算法上比较合理的(线性的)是str.join一个线性构建的列表或生成器表达式:

def double(s):
return "".join(2*c for c in s)

最新更新