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

C++에서 문자열의 오른쪽에 있는 더 큰 요소의 수

<시간/>

문자열이 주어지면 각 문자의 오른쪽에 있는 더 큰 요소의 수를 계산해야 합니다. 예를 들어 보겠습니다.

입력

string = "abc"

출력

2 1 0

오른쪽보다 2개의 더 큰 요소가 있습니다.

오른쪽에 b보다 큰 요소가 1개 있습니다.

오른쪽에 c보다 큰 요소가 0개 있습니다.

알고리즘

  • 문자열을 초기화합니다.

  • 카운트를 추적하기 위해 배열을 초기화합니다.

  • 문자열을 반복하는 두 개의 루프를 작성하십시오.

    • 한 번에 하나의 문자를 가져와서 그 뒤의 모든 문자와 비교합니다.

    • 현재 요소가 다음 요소보다 작으면 count 배열의 해당 문자 수를 증가시킵니다.

  • 모든 문자의 수를 인쇄합니다.

구현

다음은 위의 알고리즘을 C++로 구현한 것입니다.

Implementation

Following is the implementation of the above algorithm in C++

#include <bits/stdc++.h>
using namespace std;
void countCharNextLargerElementsCount(string str) {
   int len = str.length(), count[len];
   for (int i = 0; i < len; i++) {
      count[i] = 0;
   }
   for (int i = 0; i < len; i++) {
      for (int j = i + 1; j < len; j++) {
         if (str[i] < str[j]) {
            count[i]++;
         }
      }
   }
   for (int i = 0; i < len; i++) {
      cout << count[i] << " ";
   }
   cout << endl;
}
int main() {
   string str = "abcdefgh";
   countCharNextLargerElementsCount(str);
   return 0;
}


출력



위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

7 6 5 4 3 2 1 0