查找此字符串中以不同字符开头和结尾的子字符串数

Find the number of substrings of this string that start and end with different characters

提问人:Akash Anand 提问时间:9/28/2023 最后编辑:PaulMcKenzieAkash Anand 更新时间:9/28/2023 访问量:93

问:

查找此字符串中以不同字符开头和结尾的子字符串数。 如果同一子字符串在 S 中多次出现,则要多次计数。

我应该遵循什么方法。我的解决方案未优化

数组 算法 子字符串

评论

1赞 MBo 9/28/2023
My solution is not optimised- 尽管如此,还是值得描述的
0赞 PaulMcKenzie 9/28/2023
请勿将其标记为 。标记用于 。dsadsaDigital Signature Algorithm

答:

2赞 MBo 9/28/2023 #1

字符串的可能有长度的子字符串(包括长度为 1 的子字符串)P=n*(n+1)/2n

字符串中每个不同字符的查找计数。

banana => {'b':1; 'a':3; 'n':2}

如果某些字符出现,则有以该字符开头和结尾的子字符串(再次包括 1 长度的子字符串!) - 因此我们必须从整体中减去此数量。
对其他字符重复上述步骤。
ckk*(k+1)/2cP

21 - 1 -6 - 3 = 11

如果子字符串长度应该为 >=2,那么我们必须使用 和 公式P=n*(n-1)/2k*(k-1)/2

15  -0 -3 -1 = 11

令人惊讶的是,结果是一样的;)

评论

0赞 MBo 10/11/2023
@AkashAnand 我的答案还不清楚吗?