用 C++ 统计以字符 X 开头以字符 Y 结尾的子字符串数量


给定字符串 str。目标是统计 str 中以字符 X 开头并以字符 Y 结尾的子字符串的数量。例如,如果输入是“artact”并且 X='a' 和 Y='t',则子字符串将是“art”、“act”、“artact”。数量为 3。

让我们通过示例来理解。

输入 − str=”abcccdef” X=’a’ Y=’c’

输出 −以字符 X 开头以 Y 结尾的子字符串数量为 − 3

说明 − 子字符串将是

“abc”, “abcc”, “abccc”. Total 3.

输入 − str=”tempest” X=’t’ Y=’t’

输出 − 以字符 X 开头以 Y 结尾的子字符串数量为 − 3

说明 − 子字符串将是 −

“t” , “tempest” , “t”. Total 3

下面程序中使用的方法如下

我们将遍历字符串并增加 X 的计数。如果然后遇到 Y,则将 X 计数添加到以 X 开头并以 Y 结尾的字符串计数中。

  • 获取字符串 str。计算长度为 str.size()。

  • 函数 X_Y(string str, int length, char X, char Y) 获取字符串 str、字符 X、Y 并返回 str 的以 X 开头以 Y 结尾的子字符串的数量。

  • 将初始计数设置为 0。

  • 将 x_total 作为 str 中字符 X 的计数。

  • 使用 for 循环遍历 str。从 i=0 到 i<length。

  • 如果 str[i]==X,则增加 str 中 X 的计数 (x_total++)。

  • 如果 str[i]==Y,则将 x_total 添加到计数中。如果没有 X,则 x_total 将为 0,否则,Y 是从 X 开始的子字符串的结束字符。

  • 返回 count 作为所需结果。

示例

 在线演示

#include <bits/stdc++.h>
using namespace std;
int X_Y(string str, int length, char X, char Y){
   int count = 0;
   int x_total = 0;
   for (int i = 0; i < length; i++){
      if(str[i] == X){
         x_total++;
      }
      if (str[i] == Y){
         count = count + x_total;
      }
   }
   return count;
}
int main(){
   string str = "defaabbcchhkl";
   int length = str.size();
   char X = 'd';
   char Y = 'a';
   cout<<"Count of substrings that starts with character X and ends with character Y are: "<<X_Y(str, length, X, Y);
   return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

Count of substrings that starts with character X and ends with character Y are: 2

更新于: 2020-12-01

368 次浏览

开启您的 职业生涯

完成课程获得认证

开始学习
广告

© . All rights reserved.