60.每日一练:回文数(力扣)

目录

问题描述

代码解决以及思想 

解法(一)

知识点

解法(二)


问题描述

60.每日一练:回文数(力扣)_第1张图片

代码解决以及思想 

解法(一)

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 
#include 

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; // 比较原始数字和逆序数字是否相等
    }
};

你可能感兴趣的:(刷题,leetcode,算法,职场和发展)