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関数を呼び出して判定し、結果を出力します。