目录
问题描述
代码解决以及思想
解法(一)
知识点
解法(二)
问题描述
代码解决以及思想
解法(一)
class Solution {
public:
bool isPalindrome(int x) {
string arr = to_string(x); // 将整数转换为字符串
string brr; // 用于存储逆序的字符串
// 逆序构建字符串 brr
for (int i = arr.size() - 1; i >= 0; i--) {
brr += arr[i];
}
// 比较正序字符串 arr 和逆序字符串 brr 是否相等
return arr == brr;
}
};
知识点
在C++中,你可以使用标准库提供的函数来将整数转换为字符串。
使用 std::to_string()
函数:
#include <iostream>
#include <string>
int main() {
int num = 123;
std::string str = std::to_string(num);
std::cout << "Converted string: " << str << std::endl;
return 0;
}
解法(二)
class Solution {
public:
bool isPalindrome(int x) {
if (x < 0) {
return false; // 负数不可能是回文数
}
int original = x;
int reversed = 0;
while (x > 0) {
int digit = x % 10; // 获取最低位的数字
// 检查是否会溢出
if (reversed > INT_MAX / 10 || (reversed == INT_MAX / 10 && digit > INT_MAX % 10)) {
return false;
}
reversed = reversed * 10 + digit; // 构建逆序数字
x /= 10; // 去掉最低位
}
return original == reversed; // 比较原始数字和逆序数字是否相等
}
};