【发布时间】:2012-11-07 17:29:06
【问题描述】:
我正在寻求一个函数的帮助,该函数接受一个字符串,并以各种方式替换该字符串中的每个字符。我不太确定如何表达我的问题以使其有意义,因此我将向您展示它应该做什么。
stars('1')
returns ['*']
stars('12')
returns ['*1', '1*', '**']
stars('123')
returns ['*23', '1*3', '12*', '**3', '*2*', '**1', '***']
stars('1234')
returns ['*234', '1*34', '12*4', '123*', '**34', '*2*4', '*23*', '1**4', '1*3*',
'12**', '***4', '**3*', '*2**', '1***', '****']
这一切都是手工完成的,但即使我犯了一个错误,你也应该知道我现在在寻找什么。最后一种情况(所有 *)不是必需的,但我把它放在那里以确保问题得到理解。
这是我到目前为止想出的,但它并不完全奏效。
def stars(n):
lst = []
length = len(n)
for j in xrange(0, length):
p = list(n)
for k in xrange(j, length):
p[k] = '*'
lst += [''.join(p)]
return lst
输出:
'1' returns ['*']
'12' returns ['*2', '**', '1*']
'123' returns ['*23', '**3', '***', '1*3', '1**', '12*']
'1234' returns ['*234', '**34', '***4', '****', '1*34', '1**4', '1***', '12*4', '12**', '123*']
任何帮助将不胜感激。如果可能的话,希望用 Python 回答这个问题,但如果您不了解 Python,那么伪代码或其他语言也是可以接受的。如果写的清楚,我相信我可以自己把它转换成 Python。
【问题讨论】:
-
这里的理论和伪代码:stackoverflow.com/questions/361/…
-
这与排列无关——如果有的话,他需要遍历所有字符子序列
-
我猜你的第二个例子应该返回
['x2', '1x', 'xx'],你的第三个应该返回['x23', '1x3', '12x', 'xx3', 'x2x', '1xx', 'xxx']
标签: python