【问题标题】:Doubling string characters with recursion使用递归加倍字符串字符
【发布时间】:2021-12-11 21:17:51
【问题描述】:

假设我有字符串“my name is”,如何递归返回字符串“mmyy nnaammee iiss”?

【问题讨论】:

  • 请先尝试再询问
  • 附地图:"".join(map(lambda x: x + x, "my name is"))

标签: python string recursion


【解决方案1】:

以下内容很简单。将第一个字母加倍,然后递归调用其余字母。基本情况:空字符串:

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)

【讨论】:

  • 谢谢!我在我的中使用了一个 elif 语句,这使解决方案变得复杂,但这非常有帮助:)
【解决方案2】:

你可以做类似的事情

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

这个有

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

【讨论】:

  • 递归到任何地方?暗影str?
  • 什么意思?
  • OP 要求提供 recursive 函数。你的是迭代。此外,通过命名应该避免的变量来隐藏内置类型 str
猜你喜欢
  • 1970-01-01
  • 2013-11-24
  • 1970-01-01
  • 2019-09-23
  • 2014-05-16
  • 1970-01-01
  • 1970-01-01
  • 2017-07-20
  • 2012-04-17
相关资源
最近更新 更多