Python如何将字符串拆分为3个子串并获取所有拆分组合?
字符串拆分为3个非空子串的实现方案
待处理的字符串如下:
st = 'abcdfdedf'
需求为将该字符串拆分为3个非空子串,获取所有可能的拆分组合。
实现思路
要拆分出3个非空子串,本质是在字符串的字符间隙中选取2个不同的拆分位置:
- 设字符串长度为
n,字符间隙共有n-1个(对应位置1到n-1,即拆分后前半段的结束索引) - 第一个拆分点
i的取值范围为1 ≤ i ≤ n-2,需要预留至少2个字符给后面2个子串 - 第二个拆分点
j的取值范围为i+1 ≤ j ≤ n-1,需要预留至少1个字符给最后一个子串 - 每一组
(i,j)对应的拆分结果为[st[:i], st[i:j], st[j:]],刚好符合要求的输出格式
代码实现
st = 'abcdfdedf' n = len(st) result = [] # 遍历第一个拆分点 for i in range(1, n - 1): # 遍历第二个拆分点 for j in range(i + 1, n): result.append([st[:i], st[i:j], st[j:]]) # 打印结果验证 print(result)
逻辑验证
以长度为9的abcdfdedf为例,总共有28种合法拆分组合,和代码运行输出的结果长度完全匹配,其中也包含示例给出的['abc','dfd','edf']、['abcd','f','dedf']等拆分结果,符合需求。
内容的提问来源于stack exchange,提问作者Yousuf
相关产品推荐
相关产品推荐

