【发布时间】:2021-12-11 21:17:51
【问题描述】:
假设我有字符串“my name is”,如何递归返回字符串“mmyy nnaammee iiss”?
【问题讨论】:
-
请先尝试再询问
-
附地图:
"".join(map(lambda x: x + x, "my name is"))
假设我有字符串“my name is”,如何递归返回字符串“mmyy nnaammee iiss”?
【问题讨论】:
"".join(map(lambda x: x + x, "my name is"))
以下内容很简单。将第一个字母加倍,然后递归调用其余字母。基本情况:空字符串:
def double(s):
if not s:
return s
return 2 * s[0] + double(s[1:])
double("my name is")
# 'mmyy nnaammee iiss'
请注意,递归方法的重复切片和另一个答案的重复字符串连接使得这两个解决方案的时间复杂度都是二次方的。在算法上更合理(线性)将是str.joining 线性构建的列表或生成器表达式:
def double(s):
return "".join(2*c for c in s)
【讨论】:
你可以做类似的事情
def double(s):
out = ''
for letter in s:
out=out+s+s
return out
这个有
INPUT:print(double("hello"))
OUTPUT:hheelllloo
【讨论】:
str?
str。