#include<iostream>
#include<cstring>
using namespace std;
int isPalindrome(char s[]);
int main()
{
char s[100];
gets(s);
if (isPalindrome(s))
cout << "true";
else
cout << "false";
return 0;
}
void tolwr(char *s)
{
int len=strlen(s);
for(int i=0;i<len;i++)
{
if(s[i]>='a'&&s[i]<='z')
{
s[i]-=32;//字母全部转化成大写
}
}
}
int isPalindrome(char *s)
{
tolwr(s);
int left = 0;
int right = strlen(s) - 1;
int x=1;
while(left<right)
{
while(left<right&&!(s[left] >= '0' && s[left] <= 9 || s[left] >= 'A' && s[left] <= 'Z'))
{
left++;//左边不符合字母和数字的条件就往右走
}
while(left<right&&!(s[left] >= '0' && s[right] <= 9 || s[right] >= 'A' && s[right] <= 'Z'))
{
right--;//右边不符合条件就往左走
}
if(s[left]!=s[right])//符合字母和数字的条件,开始判断
{
x=0;//不符合就直接返回不是回文
break;
}
left++;//接着下一轮
right--;
}
return x;
}
**
测试:
**
输入样例:
A man, a plan, a canal; Panama
输出:
true
输入样例:
race a car
输出:
false
by北科sjk