LeetCode7反轉整數
阿新 • • 發佈:2019-01-27
https://leetcode-cn.com/problems/reverse-integer/description/
給定一個 32 位有符號整數,將整數中的數字進行反轉。
示例 1:
輸入: 123 輸出: 321
示例 2:
輸入: -123 輸出: -321
示例 3:
輸入: 120 輸出: 21
注意:
假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231, 231 − 1]。根據這個假設,如果反轉後的整數溢位,則返回 0。
以字串方式思考:
C++:
class Solution { public: int reverse(int x) { string strHXTest = to_string(x); string strHXTestResult; int nIndex = 0; //"-"代表字串 會多一步轉換 if (strHXTest.at(nIndex) == '-') { strHXTestResult += strHXTest.at(nIndex); ++nIndex; } int nSize = strHXTest.find_last_not_of('0'); while (nIndex <= nSize) { strHXTestResult += strHXTest.at(nSize); --nSize; } //嘗試使用流操作 istringstream streanResult(strHXTestResult.c_str()); //防止轉後超過int的上下限 long nResult = 0; streanResult >> nResult; if (nResult > INT32_MAX || nResult < INT32_MIN) { nResult = 0; } return nResult; } };
python:
數字方式思考:
需要判斷取值範圍,反轉後可能為大於int32的數
class Solution {
public:
int reverse(int x) {
long nResult = 0;
while (true)
{
nResult = nResult * 10 + x % 10;
x /= 10;
if (x == 0)
{
break;
}
}
return nResult;
}
};