質問: 半角英小文字で構成される文字列が2つあり、1つめには無く2つめにはある文字の数を調べるプログラミングを作りました。なお1:1対応なので同じ文字が複数あっても2つめのほうが多い場合剰余分がカウントされます。 例)abc,bca → 0, abcd,dcaae → 2 方法は一致したら大文字に変え最終的に小文字の個数を調べるのですが、文字数が増えるとどうしても処理が遅くなってしまいます。どうにか高速化する方法はないでしょうか? ``` #include #include int main(void){ int a,b,i,j,k,n=0; char s[10000],t[10000]; scanf("%d %d",&a,&b); //文字数の入力 scanf("%s",s); //1つめの文字列 scanf("%s",t); //2つめの文字列 for(i=0;i
回答: アルファベットは26文字しかないので先にカウンター配列を用意しておくといいともいますよ。 カウンター配列定義 char count[256];//なお、各要素を0で初期化しておく。 文字列2を一文字ずつ読み取ってその場所のカウンターをインクリメントしていく count[t[i] ]++; 文字列1を一文字ずつ読み取ってその場所のカウンターをデクリメントしていく count[s[i] ]--; countが1以上である要素数を調べて出力 こんな感じでどうでしょう。動作未検証