在 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.