顛倒整數 英文描述
Given a 32-bit signed integer, reverse digits of an integer.
Example 1:
Input: 123
Output: 321
Example 2:
Input: -123
Output: -321
Example 3:
Input: 120
Output: 21
Note:
Assume we are dealing with an environment which could only hold integers within the 32-bit signed integer range. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows. 中文描述
給定一個範圍為 32 位 int 的整數,將其顛倒。
例 1:
輸入: 123
輸出: 321
例 2:
輸入: -123
輸出: -321
例 3:
輸入: 120
輸出: 21
注意:
假設我們的環境只能處理 32 位 int 範圍內的整數。根據這個假設,如果顛倒後的結果超過這個範圍,則返回 0。
使用stl庫的std::string解題:
int reverse(int x) { int value = 0; int maxNumber = 2147483647; int minNumber = -2147483648; if (x == minNumber) { // 輸入為最小負數 返回0 return value; } string maxNumStr = to_string(maxNumber); bool isBigThanZero = (x > 0); // 將int數轉為字串 string numString = to_string(abs(x)); // 翻轉string std::reverse(numString.begin(), numString.end()); if (numString.length() == maxNumStr.length()) { // 字串比較 if (numString.compare(maxNumStr) > 0) { return 0; }; } int multiplier = 1; for (int index = numString.length() - 1; index >= 0; index--) { if (index == numString.length() - 1) { value = numString[index] - '0'; // 個位元 } else { multiplier = multiplier * 10; value += multiplier*(numString[index] - '0'); } } return isBigThanZero ? value : -value; }