并不是使用c++中的数据结构stack,而是自己使用数组模拟栈的工作方式
#include <iostream>
using namespace std;
int main () {
char a[100];// 字符串
char s[100];// 这是弄栈的
/*假设是a[6] 那么是0 1 2 3 4 5 mid 是 2
a[7] 那么是0 1 2 3 4 5 6 mid是 2
*/
gets(a);//读入这个字符串
int len = strlen(a);//求字符串长度
int mid = len / 2 - 1;
int top = 0; //栈顶初始化一下子
int next;
//将mid之前的字符入栈
for (int i = 0; i <= mid; i++)
{
s[++top] = a[i]; //从1开始弄,为啥呢,这样s数组下标就是1 2 3 4 5....,
//最后匹配一个 投top 要-- 所以在最后匹配完后top才会是0 ,如果下标从0开始,完了top就是-1了
}
//判断字符串是奇数还是偶数,并找出需要进行匹配时的下标
if (len % 2 == 0)
{
next = mid + 1;
}
else
{
next = mid + 2;
}
//开始匹配
for (int i = next; i < len; i++)
{
if (a[i] != s[top])
{
break;
}
top --;
}
if (top == 0)
{
cout << "是个回文" << endl;
}
else
{
cout << "不是回文" << endl;
}
system("pause");
}