通过在python中进行选择来生成所有可能的字符串的程序
假设我们有一个由小写字母字符组成的字符串s,其他字符如“[”,“|”和“]”。在此,“[a|b|c]”表示可以选择“a”,“b”或“c”。我们必须找到包含s可以代表的所有可能值的字符串列表。在此,“[]”不能嵌套,可以有许多选择。
因此,如果输入类似于s=“[d|t|l]im[e|s]”,则输出将为['dime','dims','lime','lims','time','tims']
为了解决这个问题,我们将按照以下步骤操作:
如果s为空,则
返回带有空白字符串的列表
n:=s的大小
seq:=一个新列表,res:=一个新列表
定义一个功能helper()。这将需要pos
在seq的末尾插入s[从索引pos到末尾]
助手(n)
从seq中删除最后一个元素
如果s[从索引pos到结尾]的子字符串中的“[”,则
在seq的末尾插入s[从索引pos到开始-1]
seq末尾的插入选项
帮手(完+1)
从seq中删除最后两个元素
开始:=pos+s的子字符串中“[”的索引[从索引pos到结尾]
end:=pos+s的子字符串中的“]”索引[从索引pos到结尾]
对于s的子字符串中从开始到结束以“|”分隔的每个选项,请执行
加入seq中存在的每个元素并插入res
如果pos与n相同,则
除此以外,
除此以外,
从主要方法执行以下操作:
助手
按排序顺序返回res
让我们看下面的实现以更好地理解:
示例
class Solution:
def solve(self, s):
if not s:
return [""]
n = len(s)
def helper(pos):
if pos == n:
res.append("".join(seq))
else:
if "[" in s[pos:]:
start = pos + s[pos:].index("[")
end = pos + s[pos:].index("]")
for option in s[start + 1 : end].split("|"):
seq.append(s[pos:start])
seq.append(option)
helper(end + 1)
seq.pop()
seq.pop()
else:
seq.append(s[pos:])
helper(n)
seq.pop()
seq = []
res = []
helper(0)
return sorted(res)
ob = Solution()s = "[d|t|l]im[e|s]"
print(ob.solve(s))输入值
"[d|t|l]im[e|s]"
输出结果
['dime', 'dims', 'lime', 'lims', 'time', 'tims']
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短