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

Cの文字列内の任意の2つの同じ文字間の最大文字数


アルファベットの文字列が与えられます。配列には、同じ文字を少なくとも2回出現させることができます。ここでのタスクは、文字が2回出現する間の最大文字数を見つけることです。文字の繰り返しがない場合は、-1を返します。

入力 − string str =“ abcdba”

出力 −文字列内の任意の2つの同じ文字間の最大文字数− 4

説明 −繰り返し文字は、インデックスのみの「a」と「b」です-

1. 2‘a’ first index 0 last 5 , characters in between 5-0-1=4
2. ‘b’ first index 1 last 4 , characters in between 4-1-1=2
   Maximum character in between repeating alphabets : 4

入力 − string str =“ AbcAaBcbC”

出力 −文字列内の任意の2つの同じ文字間の最大文字数− 5

説明 −繰り返し文字は、「A」、「b」、「c」であり、インデックスのみがあります-

1. ‘A’ first index 0 last 3 , characters in between 3-0-1=2
2. ‘b’ first index 1 last 7 , characters in between 7-1-1=5
3. ‘c’ first index 2 last 6 , characters in between 6-2-1=3
   Maximum character in between repeating alphabets : 5

−入力文字列が「abcdefg」の場合、繰り返し文字がないため、関数は-1を返します。

以下のプログラムで使用されているアプローチは次のとおりです

  • 文字列を含む文字配列をStr[]

    とします。
  • 関数maxChars(char str []、int n)は、任意の2つの繰り返されるアルファベット間の最大文字数を計算するために使用されます。

  • 変数maxCを-1で初期化します。

  • forループの内側では、文字列の配列を最初からトラバースします。

  • ネストされたforループでは、残りの文字をトラバースし、繰り返しがある場合はそれを検索します。 (if(str [i] ==str [j])。

  • trueの場合、インデックスを差し引いて文字間の差を計算します。 (temp =j-i-1)

  • この値がこれまでに見つかった最大値である場合は、maxCに保存します。

  • 文字列全体をトラバースした後、maxCを返します。

#include <stdio.h>
#include <stdio.h>
#include <math.h>
int maxChars(char str[],int n){
   int size = n;
   int maxC = -1;
   for (int i = 0; i < n - 1; i++)
      for (int j = i + 1; j < n; j++)
         if (str[i] == str[j]){
            int temp=abs(j-i-1);
            maxC = maxC>temp?maxC:temp;
         }
   return maxC;
}
// Driver code
int main(){
   char Str[] = "AbcAaBcbC";
   printf("Maximum number of characters between any two same character in a string :%d",
   maxChars(Str,9) );
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Maximum number of characters between any two same character in a string : 5

  1. C++のBSTの2つのノード間の最大要素

    問題の説明 N個の要素の配列と、指定された配列に属する2つの整数A、Bが与えられます。 arr[0]からarr[n-1]に要素を挿入して、二分探索木を作成します。タスクは、AからBへのパスで最大の要素を見つけることです。 例 配列が{24、23、15、36、19、41、25、35}の場合、次のようにBSTを形成できます- A=19およびB=41とすると、これら2つのノード間の最大要素は41です。 アルゴリズム ノードAおよびBの最も低い共通祖先(LCA)を見つけます。 LCAとAの間の最大ノードを見つけます。これをmax1と呼びましょう LCAとBの間の最大ノードを見つけます。こ

  2. 文字列内の文字の出現回数を検索するC#プログラム

    文字列が-だとしましょう String s =mynameistomhanks; 次に、新しい配列を作成し、上記で宣言した文字列を使用して新しいメソッドを渡します。これにより、文字列内の文字の出現回数が計算されます。 static voidcalculate(String s、int [] cal){for(int i =0; i