文字列の中の各文字の数

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
03life
記事: 16
登録日時: 2年前

文字列の中の各文字の数

#1

投稿記事 by 03life » 2年前

atcoderのこの問題についての質問です。

https://atcoder.jp/contests/abc044/tasks/abc044_b

この問題を検索しながら作成したのですが、次の部分の意味が全く分からないので教えていただきたいです。

コード:

    for(int j=0; j<26; j++) {
        x= 'a'+j;
        for(int i=0; str[i]!='\0'; i++) {
            if(str[i]==x) {
                count++;
            }
        } if(count%2!=0) {
            return 1;
        }
プログラム全文↓

コード:

#include <stdio.h>

int kazoeru(char *str)
{
    char x;
    int count = 0;

    for(int j=0; j<26; j++) {
        x= 'a'+j;
        for(int i=0; str[i]!='\0'; i++) {
            if(str[i]==x) {
                count++;
            }
        } if(count%2!=0) {
            return 1;
        }
    }
    return 0;
}

int main(void)
{
    char s[100];
    char *str=s;
    scanf("%s",s);
    if(kazoeru(str)) {
        printf("No");
    } else {
        printf("Yes");
    }
    return 0;
}
どうかよろしくお願いいたします

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 文字列の中の各文字の数

#2

投稿記事 by みけCAT » 2年前

コード:

    /* j = 0, 1, ... , 25 について以下を行う */
    for(int j=0; j<26; j++) {
        /* x を'a'にjを足した値にする
          (ASCIIのようなアルファベットの文字コードが連続した文字コードの場合、
           j番目のアルファベットになる) */
        x= 'a'+j;
        /* 文字列の終わりまで繰り返す */
        for(int i=0; str[i]!='\0'; i++) {
            /* もし、今見ている文字がこのループの前に決めた文字なら */
            if(str[i]==x) {
                /* countに1を加える */
                count++;
            }
        }
        /* もし、countが奇数なら */
        if(count%2!=0) {
            /* 1を返すことにして、この関数の実行を終了する */
            return 1;
        }
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

03life
記事: 16
登録日時: 2年前

Re: 文字列の中の各文字の数

#3

投稿記事 by 03life » 2年前

みけCAT さんが書きました:
2年前

コード:

    /* j = 0, 1, ... , 25 について以下を行う */
    for(int j=0; j<26; j++) {
        /* x を'a'にjを足した値にする
          (ASCIIのようなアルファベットの文字コードが連続した文字コードの場合、
           j番目のアルファベットになる) */
        x= 'a'+j;
        /* 文字列の終わりまで繰り返す */
        for(int i=0; str[i]!='\0'; i++) {
            /* もし、今見ている文字がこのループの前に決めた文字なら */
            if(str[i]==x) {
                /* countに1を加える */
                count++;
            }
        }
        /* もし、countが奇数なら */
        if(count%2!=0) {
            /* 1を返すことにして、この関数の実行を終了する */
            return 1;
        }
ありがとうございます!!
助かりました!

返信

“C言語何でも質問掲示板” へ戻る