计算Python中同构子串数量的程序
假设我们有一个字符串s,我们必须找到s的同构子串的数量。答案可能非常大,所以返回模10^9+7的答案。当字符串的所有字符都相同时,就称该字符串是同质的。
因此,如果输入类似于s="xyyzzzzxx",那么输出将是13,因为同构子串的列表如下
1.“x”出现三次。
“xx”出现一次。
3.“y”出现两次。
“yy”出现一次。
5.“z”出现三次。
“zz”出现两次。
“zzz”出现一次。
所以,(3+1+2+1+3+2+1)=13。
示例
让我们看看以下实现以获得更好的理解-
def solve(s): s+="@" h={} prev=s[0] c=1 for i in s[1:]: if prev!=i: if prev*c in h: h[prev*c]+=1 else: h[prev*c]=1 c=1 if prev == i: c += 1 prev = i fin=0 for i in h: t=len(i) k=0 while t!=0: k+=t t-=1 fin+=k*h[i] return fin % 1000000007 s = "xyyzzzxx" print(solve(s))
输入
"xyyzzzxx"输出结果
13