C言語 回文判定プログラムの作り方【初心者向け】
回文文字列を判定する方法は、最初と最後の2つの文字を一つずつ比較し、徐々に中心に向かって移動することです。2つのポインタが出会ったり、左のポインタが右のポインタを超えたりするまで移動します。比較中に2つの文字が異なる場合、その文字列は回文ではありません。以下はC言語で書かれた回文文字列を判定する関数です。
#include <stdio.h>
#include <string.h>
int isPalindrome(char *str) {
int len = strlen(str);
int left = 0;
int right = len - 1;
while (left < right) {
if (str[left] != str[right]) {
return 0;
}
left++;
right--;
}
return 1;
}
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
if (isPalindrome(str)) {
printf("The entered string is a palindrome.\n");
} else {
printf("The entered string is not a palindrome.\n");
}
return 0;
}
上記のコードで、isPalindrome関数は入力された文字列が回文文字列かどうかを判断するために使用されます。まず、文字列の長さを取得し、その後、左右の2つのポインタleftとrightを文字列の先頭と末尾にそれぞれ指し示します。ループ中で、もし2つのポインタが示す文字が異なる場合、0を返して回文文字列でないことを示します。もし2つのポインタが出会った場合やleftがrightより大きい場合、1を返して回文文字列であることを示します。