计算字符串s和t公共子串对数量
首先,我们需要计算字符串s的所有子串对数量。假设字符串s的长度为n,那么s的所有子串数量为n*(n+1)/2
对于字符串t,我们可以计算出其所有子串的数量。假设字符串t的长度为m,那么t的所有子串数量为m*(m+1)/2
然后,我们需要计算字符串s和t的公共子串的数量。我们可以使用两个指针i和j分别指向字符串s和t的开头,然后分别向右移动指针,如果两个指针指向的字符相同,那么公共子串的长度加一、具体的算法如下:
1. 初始化公共子串数量 count 为0。
2.初始化指针i和j分别为0,指向字符串s和t的开头。
3.开始遍历,当i<m且j<n时进行如下操作:
a. 如果 s[i] 和 t[j] 相等,那么说明到了一个公共子串,将 count 加一,并将 i 和 j 分别加一
b.如果s[i]和t[j]不相等,那么将j加一
4. 返回 count。
以下是具体的实现方式:
```
n = len(s)
m = len(t)
count = 0
for i in range(n):
for j in range(m):
if s[i] == t[j]:
k=1
while i+k<n and j+k<m and s[i+k] == t[j+k]:
k+=1
count += k
return n*(n+1)//2 + m*(m+1)//2 - count
字符串长度计算工具
#测试样例
s = "abcde"
t = "cdefg"
```
以上代码的输出结果为:4、说明字符串s和t共有4对公共子串。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。