回文指正反读均相同的字符序列,例如“abba”和”abdba”均是回文,但“good”不是回文,判定给定字符串是否是回文。
输入格式:
输入一个字符串
输出格式:
如果是回文,输出“回文”;否则输出“不是回文”
输入样例1:
aabcba
//结尾无空行
输出样例1:
不是回文
//结尾无空行
输入样例2:
abba
//结尾无空行
输出样例2:
回文
//结尾无空行
Answer:
#include<stdio.h>
#include<string.h>
#define MaxStringLength 1000
int main() {
char string[MaxStringLength];
char stack[MaxStringLength];
scanf("%s", string);
int stringLength = strlen(string);
int top = 0;
for ( ; top < stringLength / 2; ++top) {
stack[top] = string[top];
}//前半部分入栈
top--;
for (int p = (stringLength - 1) / 2 + 1; p < stringLength; ++p) {
if (stack[top] == string[p]) {
top--;
} else {
break;
}
}//后半部分判断,相等则出栈,不相等则停止
if (top == -1) {
printf("回文\n");
} else {
printf("不是回文\n");
}//根据栈是否为空判断
return 0;
}