1. 程式人生 > 其它 >C++ leetcode刷題覆盤2: reverse

C++ leetcode刷題覆盤2: reverse

技術標籤:學習Leetcodeleetcodec++

參考資料:https://www.cnblogs.com/grandyang/p/4125588.html
相關知識:
1.INT_MAX
2.除法與取餘
3.三目運算子

解法一

class Solution {
public:
    int reverse(int x) {
        int result=0;
        while (x!=0){
            if(abs(result) > INT_MAX/10) return 0;//保證資料翻轉過來不會超過最大數
            result = result * 10 + x % 10;//對x取餘然後加入結果中
            x =x/10;//除法會拋棄餘數
        }
        return result;
    }
};

編譯速度如下
在這裡插入圖片描述

解法二

把判斷放在迴圈之外

class Solution {
public:
    int reverse(int x) {
        long result=0;
        while (x!=0){
            result = result * 10 + x % 10;
            x =x/10;
        }
        return (result>INT_MAX || result<INT_MIN) ? 0 : result;//三目運算子
    }
};

程式碼速度有提升
在這裡插入圖片描述

收穫

三目運算子的使用
a=x?y:z
如果x為真,則a=y,如果x為假,則a=z。