首页 > 解决方案 > S 的至少一次包含字符 X 的不同子串的数量

问题描述

你有一个长度为 N 和一个字符 X 的字符串 S。找出 S 中至少包含一次字符 X 的不同子串的数量。

输入:abcabc c 输出:15 这里的“c”是字符。

标签: c++string

解决方案


首先通过公式找到count_total_substringS字符串。N*(N+1)/2

然后用 X 字符切片/分割字符串。然后我们得到一个排除搜索字符的 S 字符串的标记子字符串数组。现在申请

substring_count=length*(length+1)/2 

每个子字符串的公式。将所有子字符串计数相加。总和结果是所有不包含任何 X 字符的子字符串的计数,我们称之为 count_not_present。

现在结果应该是 =count_total_substring - count_not_present.

        int c=0, i, notPresent=0;

        int totalSubstring = N * (N+1) / 2;

        for (i = 0; i < size; i++)
        {
            if(S.charAt(i) == search) {
                notPresent += (c * (c+1) / 2);
                c = 0;
            }
            else {
                c++;
            }
        }

        notPresent += (c * (c+1) / 2);
        result = totalSubstring - notPresent;
        System.out.println(result);

这是我所能找到的。请检查此逻辑是否缺少任何案例。


推荐阅读