回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个程序判定给定的字符向量是否为回文,用栈实现。(提示:将一半字符入栈) 输入格式:
时间: 2023-10-30 14:25:43 浏览: 200
下面是使用C++语言实现的栈判断回文的程序:
```cpp
#include <iostream>
#include <stack>
#include <string>
using namespace std;
bool isPalindrome(string s) {
stack<char> st;
int len = s.length();
for(int i = 0; i < len / 2; i++) {
st.push(s[i]);
}
int start;
if(len % 2 == 0) {
start = len / 2;
} else {
start = len / 2 + 1;
}
for(int i = start; i < len; i++) {
if(st.top() != s[i]) {
return false;
}
st.pop();
}
return true;
}
int main() {
string s;
cin >> s;
if(isPalindrome(s)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
```
输入格式:从标准输入读入一个字符串s。
程序先将s的前一半字符依次入栈,然后从s的中间位置开始,依次与栈顶字符比较,如果不相同,则说明s不是回文;如果一直比较到栈为空,则说明s是回文。
阅读全文