#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define OK 1
#define ERROR 0
typedef struct Stack1
{
char data[40];
int top;
}Stack1;
//初始化一个栈
Stack1 *Init()
{
Stack1 *p;
if(p=(Stack1 *)malloc(sizeof(Stack1))){
p->top = 0;
return p;
}
return NULL;
}
//进栈操作
int Stack1Push(Stack1 *s,int data){
if((s->top+1)>20){
printf("栈溢出!\n");
return 0;
}
s->data[++s->top]=data;
return 1;
}
//出栈操作
int Stack1Pop(Stack1 *s){
if(s->top==0){
printf("栈为空!\n");
exit(0);
}
return (s->data[s->top--]);
}
/*释放内存*/
void Stack1Free(Stack1 *s){
if(s){
free(s);
}
}
int main()
{
Stack1 *L;
int s_length;
int result=0;
L=Init();
char s[20];
char c1,c2;
scanf("%s",&s);
s_length=strlen(s); //取得要判断的字符串长度
//进栈操作
for(int k=1;k<=s_length/2;k++)
{
Stack1Push(L,s[k-1]);
}
if(s_length%2==0) //判断字符串长度是奇数还是偶数
{
for(int i=1;i<=s_length/2;i++)
{
c1=Stack1Pop(L);
c2=s[s_length/2+i-1];
if(c1==c2) //进行判断
{
result=1;
continue;
}
else
{
result=0;
break;
}
}
}
else
{
for(int j=1;j<=s_length/2;j++)
{
c1=Stack1Pop(L);
c2=s[s_length/2+j];
if(c1==c2) //进行判断
{
result=1;
continue;
}
else
{
result=0;
break;
}
}
}
//输出操作
if(result==1)
{
printf("1");
}
else
{
printf("0");
}
return 0;
}