试写一个程序判定给定的字符向量是否为回文,用栈实现。
时间: 2023-05-25 12:03:25 浏览: 121
判断字符串是否回文 程序
4星 · 用户满意度95%
以下是一个C++程序,使用栈来判断给定的字符向量是否为回文:
```c++
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
bool isPalindrome(vector<char>& chars) {
stack<char> s;
int n = chars.size();
int mid = n / 2;
for (int i = 0; i < mid; i++) {
s.push(chars[i]);
}
if (n % 2 == 1) {
mid++;
}
for (int i = mid; i < n; i++) {
if (s.top() != chars[i]) {
return false;
}
s.pop();
}
return true;
}
int main() {
vector<char> chars = {'a', 'b', 'c', 'b', 'a'};
if (isPalindrome(chars)) {
cout << "The vector is a palindrome." << endl;
} else {
cout << "The vector is not a palindrome." << endl;
}
return 0;
}
```
该程序中,isPalindrome()函数接收一个字符向量chars作为参数,使用栈来判断该向量是否为回文。首先,将前一半的字符压入栈中,然后从中间位置开始检查向量的剩余部分,与栈中的字符进行比较,如果有不同的字符,立即返回false。注意,在向量的长度为奇数的情况下,中间位置的字符不需要比较,因此需要先将mid设为(n / 2),最后如果向量长度为奇数,将mid自增一位。
在主函数中,定义一个字符向量,将其传递给isPalindrome()函数,并打印出结果。
阅读全文