用C++栈和队列的基本操作设计用两种以上的算法来实现判断输入的字符串序列是否为回文
时间: 2024-01-22 15:18:07 浏览: 140
算法1:使用栈
1. 将字符串依次入栈
2. 依次出栈并拼接成一个新的字符串,记为reverse_str
3. 如果原字符串和reverse_str相同,则为回文,否则不是回文
C++代码实现:
```c++
#include <iostream>
#include <stack>
#include <cstring>
using namespace std;
bool isPalindrome(string str) {
stack<char> s;
for (int i = 0; i < str.length(); i++) {
s.push(str[i]);
}
string reverse_str = "";
while (!s.empty()) {
reverse_str += s.top();
s.pop();
}
if (str == reverse_str) {
return true;
} else {
return false;
}
}
int main() {
string str;
cout << "Please input a string: ";
cin >> str;
if (isPalindrome(str)) {
cout << "It is a palindrome." << endl;
} else {
cout << "It is not a palindrome." << endl;
}
return 0;
}
```
算法2:使用队列
1. 将字符串依次入队
2. 依次出队并拼接成一个新的字符串,记为reverse_str
3. 如果原字符串和reverse_str相同,则为回文,否则不是回文
C++代码实现:
```c++
#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
bool isPalindrome(string str) {
queue<char> q;
for (int i = 0; i < str.length(); i++) {
q.push(str[i]);
}
string reverse_str = "";
while (!q.empty()) {
reverse_str += q.front();
q.pop();
}
if (str == reverse_str) {
return true;
} else {
return false;
}
}
int main() {
string str;
cout << "Please input a string: ";
cin >> str;
if (isPalindrome(str)) {
cout << "It is a palindrome." << endl;
} else {
cout << "It is not a palindrome." << endl;
}
return 0;
}
```
阅读全文