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

文字列内の各桁の頻度を見つけるCプログラム


文字列sがあるとします。 sには、文字と数字の両方が含まれます。各桁の頻度を見つけて表示する必要があります。これを行うには、各桁(0〜9)に対してサイズ10の配列を作成できます。最初は配列内のすべての要素が0であり、次に桁に遭遇したら、そのインデックスの値を増やして、最後にすべてを出力します。

したがって、入力がs ="we85abc586wow236h69"の場合、出力は(Number 2、Freq 1)(Number 3、Freq 1)(Number 5、Freq 2)(Number 6、Freq 3)(Number 8、頻度2)(番号9、頻度1)

これを解決するには、次の手順に従います-

  • サイズ:10の配列頻度を定義し、すべての要素を0で初期化します

  • 初期化i:=0の場合、i

    • s [i]が数値の場合、次のようになります。

      • freq[s[i]-'0'のASCII]を1増やします

  • 初期化i:=0の場合、i <10の場合、更新(iを1増やします)、次のようにします。

    • freq [i]> 0の場合、次のようになります。

      • 表示(数値i、周波数周波数[i])

理解を深めるために、次の実装を見てみましょう-

#include <stdio.h>
#include <string.h>
void solve(char *s){
    int freq[10] = {0};
    for(int i = 0; i < strlen(s); i++){
        if(s[i] >= '0' && s[i] <= '9'){
            freq[s[i] - '0']++ ;    
        }
    }
    for(int i = 0; i<10; i++){
        if(freq[i] > 0)
            printf("(Number %d, Freq %d)\n", i, freq[i]);
    }
}
int main(){
    char *s = "we85abc586wow236h69";
    solve(s);
}

入力

"we85abc586wow236h69"

出力

(Number 2, Freq 1)
(Number 3, Freq 1)
(Number 5, Freq 2)
(Number 6, Freq 3)
(Number 8, Freq 2)
(Number 9, Freq 1)

  1. Pythonで文字列を分割する方法の数を見つけるためのプログラム

    バイナリ文字列sがあるとすると、sを3つの空でない文字列s1、s2、s3に分割して(s1連結s2連結s3 =s)することができます。文字数「1」がs1、s2、およびs3で同じになるように、sを分割できる方法の数を見つける必要があります。答えは非常に大きい可能性があるため、答えmod 10 ^ 9+7を返します。 したがって、入力がs =11101011の場合、出力は2になります。これは、「11 | 1010|11」と「11|101|011」のように分割できるためです。 これを解決するには、次の手順に従います。 count:=sの1の数を数える m:=10 ^ 9 + 7 ans:

  2. Pythonを使用して文字列内の異なる整数の数を見つけるプログラム

    小文字の英数字の文字列sがあるとします。数字以外のすべての文字をスペースに置き換える必要がありますが、少なくとも1つのスペースで区切られた整数が残っています。 sで置換操作を実行した後、異なる整数の数を見つける必要があります。ここで、先行ゼロのない10進表現が異なる場合、2つの数値は異なると見なされます。 したがって、入力がs =ab12fg012th5er67の場合、出力は3になります。これは、数値[12、 012、 5、 67]が少なく、12と012であるためです。文字列は異なりますが、整数と同じです。したがって、3つの異なる番号があります。 これを解決するには、次の手順に従います-