Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

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