Python 如何计算将字符串分成任意大小的N个部分的方法数?
我试图计算在Python中将给定字符串分成三部分的方法的数量 示例:Python 如何计算将字符串分成任意大小的N个部分的方法数?,python,string,combinations,Python,String,Combinations,我试图计算在Python中将给定字符串分成三部分的方法的数量 示例:“bbbbb”可分为三部分6种方式: b|b|bbb b|bb|bb b|bbb|b bb | b | bb bb | bb | b bbb|b|b 我的第一个想法是N选择K,其中N=字符串的长度和K=拆分方法的数量(3),但这只适用于3和4 我的下一个想法是迭代字符串,计算第一个三分之一可以分割的点的数量,第二个三分之一可以分割的点的数量,然后乘以两个计数,但我在实现这一点上遇到了困难,我甚至不太确定它是否有效 如何计算将字符
“bbbbb”
可分为三部分6种方式:
b|b|bbb
b|bb|bb
b|bbb|b
bb | b | bb
bb | bb | b
bbb|b|b
N选择K
,其中N
=字符串的长度和K
=拆分方法的数量(3),但这只适用于3和4
我的下一个想法是迭代字符串,计算第一个三分之一可以分割的点的数量,第二个三分之一可以分割的点的数量,然后乘以两个计数,但我在实现这一点上遇到了困难,我甚至不太确定它是否有效
如何计算将字符串拆分为
N
部分的方法?根据拆分的位置将其视为您选择的元素:
b ^ b ^ b ^ ... ^ b
^
是可以拆分的地方,有N-1
个位置可以拆分(N
是字符串的长度),如果要将字符串拆分为M
个部分,需要选择M-1
拆分位置,因此N-1选择M-1
例如,N=5
,M=3
<代码>(N-1选择M-1)=(4选择2)=6
实施:
import scipy.special
s = 'bbbbb'
n = len(s)
m = 3
res = scipy.special.comb(n - 1, m - 1, exact=True)
print(res)
输出:
6
希望这对你也有帮助:
string = "ABCDE"
div = "|"
out = []
for i in range(len(string)):
temp1 = ''
if 1 < i < len(string):
temp1 += string[0:i-1] + div
for j in range(len(string) + 1):
temp2 = ""
if j > i:
temp2 += string[i-1:j-1] + div + string[j-1:]
out.append(temp1 + temp2)
print(out)
空字符串也是一个子字符串,是否允许任何“部分”为空字符串?(问题是一个实际的问题,例如,考虑什么是<代码>‘a’。分裂(′)< /代码>返回)。答案是<代码>导入数学;math.comb(N-1,K-1),使用Python标准库中的函数,其中
N
是字符串的长度,K
是片段数。每个片段都必须是非空字符串。我不知道他为什么在python标签上贴这个问题?:)这是一个统计问题。我认为thejoj的进球是另外一回事……啊,这是有道理的。非常感谢。在Python中,这是一个统计问题,两者兼而有之。我已经写了一个choose和factorial函数,只是没有意识到-1部分。现在可以了,再次感谢。
['A|B|CDE', 'A|BC|DE', 'A|BCD|E', 'AB|C|DE', 'AB|CD|E', 'ABC|D|E']