判斷輸入字符串是否為回文串(正讀反讀相同)。輸入第一行為測試用例數 n,隨後 n 行字符串(長度 ≤ 30)。每行輸出 "yes" 或 "no"。
雙指針法:設置左指針 i=0,右指針 j=length-1,向中間移動比較字符。若所有對應位置字符相等則為回文。
優化:只需遍歷前半段,比較 string[i] 與 string[length-1-i]。
#include <stdio.h>
#include <string.h>
int main() {
int i, flag, num, length;
char string[101];
scanf("%d", &num);
getchar();
while (num--) {
gets(string);
length = strlen(string);
flag = 1;
for (i = 0; i < length - i - 1; i++) {
if (string[length - i - 1] != string[i]) {
flag = 0;
break;
}
}
if (flag) printf("yes");
else printf("no");
if (num > 0) printf("\n");
}
return 0;
}
輸入:
4 level abcde noon haha
輸出:
yes no yes no