在 C++ 中查詢按字母順序排列的子字串的數量


假設我們有一個長度為 n 的字串。它只包含大寫字母。我們必須找到字元按字母順序出現的子字串的數量。子字串的最小大小為 2。因此,如果字串如下所示:“REFJHLMNBV”,並且子字串計數為 2,則它們是“EF”和“MN”。

因此,為了解決這個問題,我們將按照以下步驟進行操作 −

  • 檢查 str[i] + 1 是否與 str[i+1] 相同,如果相同,則將結果增加 1,並迭代字串,直到下一個字母順序錯誤的字元,否則繼續。

範例

 線上演示

#include<iostream>
using namespace std;
int countSubstr(string main_str) {
   int res = 0;
   int n = main_str.size();
   for (int i = 0; i < n - 1; i++) {
      if (main_str[i] + 1 == main_str[i + 1]) {
         res++;
         while (main_str[i] + 1 == main_str[i + 1]) {
            i++;
         }
      }
   }
   return res;
}
int main() {
   string str = "REFJHLMNBV";
   cout << "Number of substrings: " << countSubstr(str);
}

輸出

Number of substrings: 2

更新於: 19-Dec-2019

103 瀏覽量

開啟你的 職業生涯

完成課程獲得認證

立即開始
廣告
© . All rights reserved.