利用栈判断一个字符串是否是回文
【问题描述】编写一个程序,判断一个字符串是否为回文;(顺读和倒读都一样的字符串称为回文)。
【输入形式】长度小于100的任意字符串
【输出形式】如果输入字符串是回文,则输出”yes”;如果字符串不是回文,则输出”no”
【样例1输入】abcdcba
【样例1输出】yes
【样例输入2】abcdfsfdsg
【样例2输出】no
【样例说明】样例1中,字符串abcdcba是回文,因此输出”yes”;样例2中,abcdfsfdsg不是回文,因此输出”no”
代码如下:
#include<iostream>
#include<iomanip>
#include<cstdlib>
#include<cstring>
using namespace std;
template<class T>
class StackList
{
public:
StackList()
{
top = -1;
}
StackList(int n)
{
top = -1;
stack_t = new T[n+1];
}
~StackList()
{
delete[] stack_t;
}
bool judege(T s[],int n)
{
int temp = n / 2;
for (int i = 0; i < temp; i++)
{
stack_t[++top] = s[i];
}
for (int i = n - temp; i < n; i++)
{
if (stack_t[top] == s[i])
{
top--;
}
else
{
break;
}
}
if (top == -1&&n!=0)
return true;
else
return false;
}
private:
int top;
T* stack_t;
};
int main()
{
char s[101];
cin.getline(s, 101);
int n = strlen(s);
StackList<char> t(n);
if (t.judege(s, n))
{
cout << "yes" << endl;
}
else
{
cout << "no" << endl;
}
return 0;
}
版权声明:本文为qq_36833548原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。