C++ leetcode刷題覆盤2: reverse
阿新 • • 發佈:2021-01-15
參考資料: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。