编写一个算法利用顺序栈判断一个字符串是否是对称串。所谓对称串是指从左向右读和从右向左读的序列相同。
输入格式:
输入一个无空格的字符串。
输出格式:
如果该字符是对称的,输出yes,否则输出no。
输入样例:
在这里给出一组输入。例如:
abba
输出样例:
在这里给出相应的输出。例如:
yes
输入样例:
abcd
输出样例:
在这里给出相应的输出。例如
no
代码长度
16 KB
时间
400 ms
内存
MB
栈
8192 KB
代码(C语言):
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define YES 1;
#define NO 0;
typedef struct SString
{
char ch[10000];
int length;
}SString;
void StrAssign(SString *T);//串输入
void StrOutput(SString *T);//串输出
int StrJudge(SString *T);//判断是否对称,通过0/1判断
int main()
{
SString T;
StrAssign(&T);
// StrOutput(&T);//判断是否正确输入,输出出来看看
int p;
p=StrJudge(&T);
if(p==1)
printf("yes");
else
printf("no");
}
void StrAssign(SString *T)//串输入
{
int i=1;
scanf("%c",&T->ch[i]);
while(T->ch[i]!='\0')
{
i++;
scanf("%c",&T->ch[i]);
}
T->length=i-1;
}
void StrOutput(SString *T)//串输出
{
int i;
for(i=1;i<=T->length;i++)
{
printf("%c",T->ch[i]);
}
printf("\n");
}
int StrJudge(SString *T)//判断是否对称
{
int i,j;
j=T->length;
for(i=1;i<=T->length;i++)
{
if(T->ch[i]!=T->ch[j])
return NO;
j--;
}
return YES;
}