什么是递归删除字符串中所有出现的子字符串的有效方法?

时间:2015-02-23 03:51:18

标签: string algorithm

抱歉我的英语不好。

我有这样的问题。给定一个字符串(可能是一个很长的字符串)和一个模式,如何删除字符串中出现的所有模式?请注意,删除前一个后可能会出现新的事件。例如:

string: deaabcbcef
pattern: abc
result: deef

是否有任何算法或有效方法来解决它(几秒钟内)?

P / S:我举一个简单的例子说清楚,但我认为这不是道路。字符串长度可以达到10 ^ 6个字符,时间限制为2秒。那有什么算法吗?

2 个答案:

答案 0 :(得分:1)

对于 python ,我不知道是否有一个更好的方式而不是一个简单的老式循环:

new = old.replace(pattern, '')
while new != old:
    old = new
    new = old.replace(pattern, '')

示例:

>>> old = 'deaabcbcef'
>>> pattern = 'abc'
>>> new = old.replace(pattern, '')
>>> while new != old:
...     old = new
...     new = old.replace(pattern, '')
... 
>>> new
'deef'

答案 1 :(得分:0)

的Python:

的代码:

import string
input="salsa"
output = string.replace(input,"sa", "re")
print output

输出:

  

relre