7. Reverse Integer

题目地址:https://leetcode.com/problems/reverse-integer/
思路:把int转为字符串,字符串反转后再转回int,同时要处理越界问题

class Solution {
public:
    int reverse(int x) {
        bool is_negtive = false;
        if (x == 0 || x == INT_MIN) {
            return 0;
        } else if (x < 0) {
            is_negtive = true;
            x = -x;
        } else {
            is_negtive = false;
        }
        
        string s = to_string(x);
        int len = s.length();
        char sr[len + 1];
        for (int i=0; i<len; i++) {
            sr[i] = s[len - i - 1];
        }
        sr[len] = '\0'; // 这里必须加一个'\0'
        int tmp = atof(sr);
        // cout << tmp << ' ' << INT_MIN << endl;
        if (tmp <= INT_MIN || tmp > INT_MAX ) {
            return 0;
        }
        if (is_negtive) {
            tmp = -tmp;
        }
        return tmp;
    }
};
Runtime Memory
4 ms 8.2 MB

刚开始用的atoi函数,该函数越界时不会报错,所以不能使用。换成atof,再强制转换为int,越界时检查一下。该思路比较容易理解,缺点是代码行数略多。
也可以使用官方“除以10”的思路,不过感觉对越界的检查不易理解。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容