判斷字符串是否是回文的方法可以使用雙指針的思想,一個指針指向字符串的開頭,一個指針指向字符串的末尾,然后逐步比較兩個指針指向的字符是否相同,直到兩個指針相遇或者找到不相同的字符。
下面是一個示例代碼:
#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
函數(shù)獲取字符串的長度,然后使用兩個指針start
和end
分別指向字符串的開頭和末尾。在一個while
循環(huán)中,不斷比較指針指向的字符是否相同,如果發(fā)現(xiàn)不同的字符,則返回0表示不是回文;如果兩個指針相遇,則表示整個字符串都比較完畢,返回1表示是回文。最后在main
函數(shù)中調(diào)用isPalindrome
函數(shù)進行判斷,并輸出結(jié)果。