簡體   English   中英

用遞歸將字符串字符加倍

[英]Doubling string characters with recursion

假設我有字符串“my name is”,我如何遞歸地返回字符串“mmyy nnammee iiss”?

你可以做類似的事情

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM