c++ 回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个程序判定给定的字符向量是否为回文,用栈实现。(提示:将一半字符入栈)
时间: 2023-10-30 13:11:14 浏览: 90
C++判断一串字符是否为回文源程序
以下是用栈实现判断字符向量是否为回文的C++代码:
```c++
#include <iostream>
#include <stack>
#include <cstring>
using namespace std;
bool isPalindrome(char* str) {
int len = strlen(str);
stack<char> st;
// 将前一半字符入栈
for (int i = 0; i < len / 2; i++) {
st.push(str[i]);
}
// 判断后一半字符是否与栈中字符相同
for (int i = (len + 1) / 2; i < len; i++) {
if (str[i] != st.top()) {
return false;
}
st.pop();
}
return true;
}
int main() {
char str[] = "abdba";
if (isPalindrome(str)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
```
该程序先将字符向量的前一半字符入栈,然后依次比较后一半字符与栈中字符是否相同,如果不同则返回false,否则返回true。
阅读全文