// 回文字符串递归实现
int isPalindromeChar0(char *str, int length) {
if (length <= 1) return 1;
if (str[0] == str[length-1])
return isPalindromeChar0(str+1, length-2);
return 0;
}
// 回文字符串非递归实现
int isPalindromeChar1(char *str) {
int length=0;
while (str[length++]);
if (length <= 1) return 1;
int i;
for (i=0,length--; i<length>>1; ++i)
if (str[i] != str[length-i-1])
break;
return i>=length>>1;
}
int main() {
printf("%d\n", isPalindromeChar0("1", 1));
printf("%d\n", isPalindromeChar0("121", 3));
printf("%d\n", isPalindromeChar0("1221", 4));
printf("%d\n", isPalindromeChar0("1234", 4));
printf("-----\n");
printf("%d\n", isPalindromeChar1("1"));
printf("%d\n", isPalindromeChar1("121"));
printf("%d\n", isPalindromeChar1("1221"));
printf("%d\n", isPalindromeChar1("1234"));
return 0;
}