使用Recursion将所有出现的子字符串替换为另一个子字符串

时间:2013-12-11 11:24:41

标签: string recursion python-3.x substring

给定一个字符串及其两个子字符串(名为a和b),我需要编写一个递归函数,用a替换所有出现的b,然后返回新字符串。

有人可以帮助我如何开始吗?

1 个答案:

答案 0 :(得分:3)

递归地,您知道您的函数适用于:

  • base case)一个空字符串,必须返回一个空字符串;
  • rec case)以b开头的字符串必须将b替换为a并检查字符串的其余部分;
  • rec case)否则,返回字符串的第一个字符链接到递归返回的其余字符串

以下是算法:

def rec_replace(string, a, b):
    if not string: #if the string is empty
        return ""
    elif string[:len(b)] == b: #if the string start with b, replace it with a
        return a + rec_replace(string[len(b):], a, b)
    else: #else, add this character and go to the next one
        return string[0] + rec_replace(string[1:], a, b)

测试:

print rec_replace("hello this is hello a simple hello test", "ok", "hello")

输出:

ok this is ok a simple ok test