/********************************
* 程序名称:判断回文字串
* 程序来源:B站 Tracy老师视频 https://www.bilibili.com/video/BV1Uk4y1r7mr
* 功能实现:输入字符串,判断回文
* 开发时间:2020 -12- 15
*******************************/
#include <iostream>
#include <stack>
using namespace std;
stack<char> st; //字符串堆栈
//ishw(string s)
bool ishw(string s) {
int len, mid, next; //len-串长度
len = s.size(); //len-字符串长度
mid = len / 2;
while(!st.empty()) {
st.pop(); //清空堆栈
}
if(len % 2 == 0) { //获取子串的中间位置
next = mid; //mid-字符中间位置
} else {
next = mid + 1;
}
//将前半部分子串加入堆栈
for(int i=0; i<mid; i++) {
st.push(s[i]);
}
//堆栈前半部分字符和后半部分比较,相同出栈
for(int i=mid; i<len; i++) {
if(s[i] == st.top()) {
st.pop(); //出栈
}
}
//栈空,是回文
if(st.empty()== true) {
return true;
} else {
return false; //不是回文
}
}
//main() star
int main() {
string s; //输入字符串
cin >> s;
if(ishw(s)) { //判断回文
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
return 0;
}
测试1:123321
123321
YES
--------------------------------
Process exited after 2.732 seconds with return value 0
请按任意键继续. . .
测试2:asdafafa
asdafafa
NO
--------------------------------
Process exited after 9.355 seconds with return value 0
请按任意键继续. . .