(LeetCode每日一刷02)反轉整數
阿新 • • 發佈:2018-11-17
題目描述:
給定一個 32 位有符號整數,將整數中的數字進行反轉。
注意:
假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−2^21, 2^31−1]。根據這個假設,如果反轉後的整數溢位,則返回 0。
示例:
示例 1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
示例 3:
輸入: 120
輸出: 21
我提交的程式碼:
class Solution { public: int reverse(int x) { bool symbol = 1; //預設x為正數 int remainder; //餘數 std::vector<int> numVec; //存放每一位上的數字 if (x == 0) //0作為特殊處理 return 0; if (x < 0) //負數取餘特殊,直接轉成正數 { x = abs(x); symbol = 0; } for(; x != 0; ) { remainder = x % 10; numVec.push_back(remainder); x = x / 10; } int vector_size = numVec.size(); int i; double rslt = numVec[vector_size - 1]; //這裡要設定為double,不然後面會溢位 for (i = 0; i < vector_size - 1; i++) { int j = vector_size - i - 1; rslt = rslt + numVec[i] * pow(10,j); } if (symbol == 0) { rslt *= -1; } if(rslt > pow(2,31) - 1 || rslt < (-1 * pow(2,31))) { rslt = 0; } return rslt; } };
程式碼執行時間:16ms。大概75.71% 的使用者。