C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++の文字列の右側にある大きい要素の数


文字列を指定すると、各文字の右側にある大きな要素の数を数える必要があります。例を見てみましょう。

入力

string = "abc"

出力

2 1 0

右側にあるよりも大きな要素が2つあります。

右側にbよりも大きい要素が1つあります。

右側にcよりも大きい要素が0個あります。

アルゴリズム

  • 文字列を初期化します。

  • 配列を初期化して、カウントを追跡します。

  • 文字列を反復処理するために2つのループを記述します。

    • 一度に1文字ずつ取り、それ以降のすべての文字と比較します。

    • 現在の要素が次の要素よりも小さい場合は、カウント配列の対応する文字数をインクリメントします。

  • すべての文字の数を出力します。

実装

以下は、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


  1. C++を使用して文字列の部分文字列の数を見つける

    この記事では、特定の文字列に形成できるサブ文字列(空ではない)の数を見つけるためのアプローチについて学習します。 Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, ‘oo’, ‘on’, ‘moo’, ‘oon’ and &

  2. C++での二分木の右側面図

    二分木があると仮定します。右側から木を見ると、そのいくつかの要素を見ることができます。それらの要素を表示する必要があります。したがって、ツリーが次のような場合- これを解決するには、次の手順に従います- dfsの支援メソッドを1つ作成します。これには、tree_node、回答を保持する配列、およびレベルが必要です。レベルは最初は0です。dfsは以下のように機能します- ノードがnullの場合は、戻ります level =回答配列の長さの場合、ノードの値をans配列に挿入します dfs(ノードの右側、ans、レベル+ 1) dfs(ノードの左側、ans、レベル+ 1) メイン関数か