点击查看代码
/*
读入一串字符,判断是否是“回文串”。
“回文串”是一个正读和反读都一样的字符串,如“level”或者“noon”
输入格式:
一行字符串,长度不超过255
输出格式:
如果是回文串,则输出Yes,否则输出No
输入样例:
12321
输出样例:
Yes
解题思路:
1、创建char str[]数组存储读入的字符串,假设数组下标从0开始,因为回文串正读和反读都是一样的,因此只需要遍历数组比较str[i]与str[len-1-i]是否相等即可
循环次数是数组的一半for(int i=0;i<len/2;i++),不需要读到i==len/2,因为当len是奇数,str[]中间只有一个元素,str[len/2]不需要检测
当len是偶数,str[]中间有两个元素,str[i]与str[len-1-i]已经判断了
2、当出现一对str[i]与str[len-1-i]不相等,即可判断不是回文串,就可以提前结束循环
3、因为读入字符串长度不超过255,加上末尾空字符,char str[]大小设置为256即可
注:
VS按ctrl+z退出while循环输入,或者直接关闭调试台
*/
#include<cstdio>
#include<cstring>
#pragma warning(disable:4996) //允许使用scanf和printf
const int maxn = 256; //输入字符串长度不超过255,加上末尾空字符则为256
bool Judge(char str[]) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
if (str[i] != str[len - 1 - i]) {
return false;
}
}
return true;
}
int main() {
char str[maxn];
while (gets_s(str)) {
bool flag = Judge(str);
if (flag == true) {
printf("Yes\n");
}
else {
printf("No\n");
}
}
return 0;
}