文字列が回文であるかどうかを判断するC言語の方法
文字列が回文かどうかを判断するには、次の手順を取ることができます。
- 文字列の先頭を指し示すポインタと、文字列の末尾を指し示すポインタを定義します。
- 各ポインタが指し示す文字を比較し、同じ場合は両方のポインタを1つ進める。異なる場合は、文字列は回文ではないと判断する。
- 両方のポインタが出会うかクロスするまで、ステップ2を繰り返す。
- もし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を返して、回文でないことを示します。最終的な結果は、関数の戻り値に基づいて出力されます。