题目描述:
利用顺序栈判断一个字符串是否为对称串。所谓对称串是从左向右读和从右向左读的序列相同。
解题思路:
n个元素连续进栈,产生的连续出栈序列和输入序列正好相反,对于字符串str从头到尾将其所有元素连续进栈,如果所有元素连续出栈产生的序列和str从头到尾的字符依次相同,表示str是一个对称串,返回真,否则,表示str不是对称串,返回假。
代码如下:
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stack>
using namespace std;
bool sytemtry(char str[]) // 具体操作函数
{
int i;
char e;
stack<char>st; // 定义栈st
for(i=0; str[i]!=’\0′; i++) // 将字符串全部入栈
st.push(str[i]);
for(i=0; str[i]!=’\0′; i++) // 遍历每个字符元素
{
e=st.top(); // 出栈e与每个字符判断
if(str[i]!=e)
return false;
st.pop();
}
return true;
}
int main()
{
char arr[1000];
scanf(“%s”,&arr);
if(sytemtry(arr)==true)
cout<<“Yes”<<endl;
else
cout<<“No”<<endl;
return 0;
}