美文网首页
7. Reverse Integer

7. Reverse Integer

作者: wangdsh | 来源:发表于2019-08-24 21:13 被阅读0次

    题目地址: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”的思路,不过感觉对越界的检查不易理解。

    相关文章

      网友评论

          本文标题:7. Reverse Integer

          本文链接:https://www.haomeiwen.com/subject/zzxcectx.html