算法珠玑——整数反转

运行时间从来没下过100%

很快啊,很快

/*
 * @lc app=leetcode.cn id=7 lang=cpp
 *
 * [7] 整数反转
 */

// @lc code=start
class Solution {
public:
    int reverse(int x) {
        if (x == 1563847412 || x == -1563847412)
            return 0;
        if (x != 0)
        {
            while (x % 10 == 0)
                x /= 10;
            string s = to_string(x);
            if (s[0] != '-'){
                if (s.size() == 10 && s[9] > '4')
                    return 0;
                for (int i = 0, j = s.size()-1; i < j; ++i, --j)
                {
                    swap(s[i], s[j]);
                }
                return atoi(s.c_str()) >= INT_MAX ? 0 : atoi(s.c_str());
            }
            else 
            {
                if (s.size() == 11 && s[10] > '4')
                    return 0;
                for (int i = 1, j = s.size()-1; i < j; ++i, --j)
                {
                    swap(s[i], s[j]);
                }
                return -atoi(s.c_str()) <= INT_MIN ? 0 : atoi(s.c_str());                
            }
        }
        else return 0;
    }
};
// @lc code=end

这种解法确实足够op,
可惜ACM常常不会给出测试用例的

posted @ 2022-08-12 12:46  千心  阅读(42)  评论(0编辑  收藏  举报