利用栈判断一个字符串是否是回文

【问题描述】编写一个程序,判断一个字符串是否为回文;(顺读和倒读都一样的字符串称为回文)。

【输入形式】长度小于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 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_36833548/article/details/121292867