19-2回文递归和非递归栈
//非递归栈的写法
#include<iostream>
#include<stack>
using namespace std;
stack<char> st;
int main()
{
string s;
getline(cin,s);//可以读入空格的输入
int n=s.size();
if(n%2==0)
{
for(int i=0;i<=n/2-1;i++)
{
st.push(s[i]);
}
for(int i=n/2;i<=n-1;i++)
{
if(s[i]==st.top())
{
st.pop();
continue;
}
else break;
}
}
else
{
for(int i=0;i<=(n-1)/2-1;i++)
{
st.push(s[i]);
}
for(int i=(n-1)/2+1;i<=n-1;i++)
{
if(s[i]==st.top())
{
st.pop();
continue;
}
else break;
}
}
if(st.empty()) cout<<"yes"<<endl;
else cout<<"no"<<endl;
return 0;
}
//递归写法
#include<iostream>
using namespace std;
bool is_huiwen(string s,int l,int r)
{
if(l==r) return true;
if(s[l]==s[r])
{
return is_huiwen(s,l+1,r-1);
}
return false;
}
int main()
{
string s;
getline(cin,s);
if(is_huiwen(s,0,s.size()-1)) cout<<"yes"<<endl;
else cout<<"no"<<endl;
return 0;
}