今天完成了对于回文数的计算
只是使用栈:
点击查看代码
#include<iostream>
#include<stack>
using namespace std;
bool isPalindrome(int num) {
// 将负数排除,因为负数不可能是回文数
if (num < 0) return false;
stack<int> stack;
int original = num;
int reversed = 0;
// 逐位将数字的前半部分压入栈中
while (num > 0) {
stack.push(num % 10);
num /= 10;
}
// 逐位比较栈顶的数字与原数
num = original; // 重置num为原始数字
while (!stack.empty()) {
int top = stack.top();
if (num % 10 != top) return false; // 如果不相等,则不是回文数
stack.pop();
num /= 10;
}
return true; // 全部数字相等,则为回文数
}
int main() {
int number;
cout << "请输入一个数字: ";
cin >> number;
if (isPalindrome(number)) {
cout << number << " 是回文数\n";
} else {
cout << number << " 不是回文数\n";
}
return 0;
}
点击查看代码
#include <iostream>
#include <stack>
#include <queue>
using namespace std;
bool isPalindrome(int num) {
// 负数不可能是回文数
if (num < 0) return false;
stack<int> stack;
queue<int> queue;
// 提取每一位并分别存入栈和队列
int original = num;
while (num > 0) {
int digit = num % 10;
stack.push(digit);
queue.push(digit);
num /= 10;
}
// 比较栈和队列的每一位
while (!stack.empty() && !queue.empty()) {
if (stack.top() != queue.front()) {
return false; // 如果栈顶和队首元素不相等,则不是回文数
}
stack.pop();
queue.pop();
}
return true; // 所有位都相等,则为回文数
}
int main() {
int number;
cout << "请输入一个数字: ";
cin >> number;
if (isPalindrome(number)) {
cout << number << " 是回文数\n";
} else {
cout << number << " 不是回文数\n";
}
return 0;
}