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

文字列が回文かどうかを判断するには、次の手順を取ることができます。

  1. 文字列の先頭を指し示すポインタと、文字列の末尾を指し示すポインタを定義します。
  2. 各ポインタが指し示す文字を比較し、同じ場合は両方のポインタを1つ進める。異なる場合は、文字列は回文ではないと判断する。
  3. 両方のポインタが出会うかクロスするまで、ステップ2を繰り返す。
  4. もし2つのポインターが出会ったら、文字列は回文であることを意味します。2つのポインターが交差した場合、文字列は回文ではないことを意味します。

以下はサンプルコードです:

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

int isPalindrome(char* str) {
    int start = 0;
    int end = strlen(str) - 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("%s 是回文串\n", str);
    } else {
        printf("%s 不是回文串\n", str);
    }
    
    return 0;
}

上記のコードは、文字列の先頭と末尾の文字を比較して、それが回文かどうかを判断しています。比較中に異なる文字が見つかれば、直ちに0を返して、回文でないことを示します。最終的な結果は、関数の戻り値に基づいて出力されます。

bannerAds