设计一个判断字符串对称的算法
很容易联想到栈的先进后出的特性,运用这一特性可以编写代码。
出栈序列恰好和入栈序列相反,我们只要判断这两个序列是否一致就可以实现题目的要求。
返回值可以用布尔类型,是对称串就返回true,反之则false。
bool symmetry(SqStack *st,ElemType str[]){
int i; ElemType e;
for (i = 0;str[i] != '\0'; ++i) //i < strlen
Push(st,str[i]);
for (i = 0; str[i] != '\0'; ++i) { //i < strlen
ElemType ch = Pop(st,e);
if(str[i] != ch){
DestroyStack(st);
printf("不是一个对称串\n");
return false;
}
}
DestroyStack(st);
printf("是一个对称串\n");
return true;
}
其中循环条件可以改成具体的次数,有专门函数求取字符串长度。