C言語で文字列が回文かどうかを判断する

文字列が回文かどうかを判定する方法は、両端ポインタを使用することができます。1つのポインタは文字列の先頭を指し、もう1つのポインタは文字列の末尾を指します。そして、それぞれのポインタが指す文字を比較し、両方のポインタが出会ったり、異なる文字が見つかるまで進めます。

以下に示すのは、コードの例です:

#include <stdio.h>
#include <string.h>

int isPalindrome(char* str) {
    int len = strlen(str);
    int start = 0;
    int end = len - 1;

    while (start < end) {
        if (str[start] != str[end]) {
            return 0;  // 不是回文
        }
        start++;
        end--;
    }

    return 1;  // 是回文
}

int main() {
    char str[100];
    printf("请输入一个字符串:");
    scanf("%s", str);

    if (isPalindrome(str)) {
        printf("是回文\n");
    } else {
        printf("不是回文\n");
    }

    return 0;
}

このコードは、まずstrlen関数を使って文字列の長さを取得し、次に2つのポインタstartとendを文字列の先頭と末尾にそれぞれ指定します。whileループ内で、ポインタが指す文字が同じかどうかを繰り返し比較します。異なる文字が見つかった場合は0を返し、ポインタが出会った場合は文字列全体が比較されたことを示し、1を返します。最後に、main関数でisPalindrome関数を呼び出して判定し、結果を出力します。

bannerAds