判断是否为回文串

点击查看代码
/*
读入一串字符,判断是否是“回文串”。
“回文串”是一个正读和反读都一样的字符串,如“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;
}
posted @ 2022-09-25 14:00  zhaoo_o  阅读(23)  评论(0编辑  收藏  举报