回文串判断C++如果一个字符串正反看(左到右,右到左)是相同的称为回文.编程判断从键盘输入的任意一个串是否回文.注:汉字和非汉字分别处理,判断是否汉字的标志是汉字ASCII码是为负数,
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/16 12:24:32
回文串判断C++如果一个字符串正反看(左到右,右到左)是相同的称为回文.编程判断从键盘输入的任意一个串是否回文.注:汉字和非汉字分别处理,判断是否汉字的标志是汉字ASCII码是为负数,
回文串判断C++
如果一个字符串正反看(左到右,右到左)是相同的称为回文.编程判断从键盘输入的任意一个串是否回文.注:汉字和非汉字分别处理,判断是否汉字的标志是汉字ASCII码是为负数,同时处理一个汉字通过成对字符数组元素比较完成.如:若汉字串为str1[31]="红黑红黑红",串长n=10第一个汉字与最后一个汉字的比较是 str1[0]==str1[n-2]&&str1[0+1]==str1[n-1].strrev()函数不能用于汉字.
回文串判断C++如果一个字符串正反看(左到右,右到左)是相同的称为回文.编程判断从键盘输入的任意一个串是否回文.注:汉字和非汉字分别处理,判断是否汉字的标志是汉字ASCII码是为负数,
#include <cstdio>
using namespace std;
bool isPalindrome(char inStr[])
{
char* pl = inStr;
char* pr = inStr;
while (*pr != 0) pr++;
pr--; //pr指向最后一个字符
while (pl < pr)
{
if (*pl < 0) //中文
{
if(pl[0] != pr[-1] || pl[1] != pr[0])
{
return false;
}
else
{
pl += 2;
pr -= 2;
}
}
else if(*pl++ != *pr--)
{
return false;
}
}
return true;
}
int main()
{
char buf[500] = {0};
scanf("%s",buf);
if (isPalindrome(buf))
{
printf("是回文\n");
}
else
{
printf("不是回文\n");
}
return 0;
}