用 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 次瀏覽

開啟您的 職業生涯

完成課程獲得認證

開始學習
廣告