回文串判定
Time Limit: 1000MS Memory limit: 65536K
题目描述
输入一串字符(长度小于100),判断该串字符是否是回文串(正序读与逆序读内容相同)。
输入
输入一串字符(长度小于100)。
输出
若该串字符是回文串输出“yes",否则输出”no“。
示例输入
asdfgfdsa
示例输出
yes
- 提交
- 状态
-
#include<stdio.h> #include<string.h> #include<stdlib.h> #define stackmax 1000 #define stacknum 1000 typedef struct { char *top; char *base; int stacksize; }stack; int initstack(stack &s) { s.base = (char *)malloc(stackmax*sizeof(char)); if(!s.base) exit(0); s.top = s.base; s.stacksize = stackmax; return 1; } int push(stack &s,char e) { if(s.top - s.base >= s.stacksize) { s.base = (char *)realloc(s.base,(stacknum + s.stacksize)*sizeof(char)); if(!s.base) exit(-1); s.top = s.stacksize + s.base; s.stacksize += stacknum; } s.top++; *s.top = e; return 1; } char pop(stack &s) { char e; e = *s.top; s.top--; return e; } void judge(stack &s,char str[]) { initstack(s); int f; int len = strlen(str); for(int i = 0;i < len;i++) { push(s,str[i]); } for(int i = 0;i < len;i++) { if(str[i] != pop(s)) { f = 1; break; } else f = 0; } if(!f) printf("yes\n"); else printf("no\n"); } int main() { stack s; char str[stackmax]; scanf("%s",str); judge(s,str); return 0; }