leetcode7 整數反轉

2021-09-24 23:48:04 字數 1042 閱讀 9587

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。

示例 1:

輸入: 123

輸出: 321

示例 2:

輸入: -123

輸出: -321

示例 3:

輸入: 120

輸出: 21

注意:假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。

1.注意數值溢位判斷的提前操作,**中注釋的部分判斷錯誤(res * 10 + x % 10可能已經溢位,用溢位後的值判斷發生錯誤);

類似的還有leetcode第8題leetcode8 字串轉換整數 (atoi)

2.原資料已經限定了int範圍,所以此處可借助long型別來做校驗,避免上下界判斷。

解法一, 在*10前校驗是否溢位

class solution 

*/if (res > int_max / 10

|| ((res == int_max / 10) && (x % 10 > int_max % 10)))

if (res < int_min / 10

|| ((res == int_min/ 10) && (x % 10 < int_min % 10)))

res = res * 10 + x % 10;

x = x / 10;

}return res;

}};

解法二,借助long型別來輔助判斷

class solution 

// 使用long型別輔助判斷後就不需要下面的校驗了

// if (res < -1 * pow(2, 31) / 10 || res > (pow(2, 31) - 1) / 10)

res = res * 10 + x;

if (res < int_min || res > int_max)

return res;

}};

LeetCode7反轉整數

給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123輸出 321示例 2 輸入 123輸出 321示例 3 輸入 120輸出 21注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 231,231 1 根據這個假設,如果反轉後的整數溢位,則返回 0。以字串方式思考...

LeetCode 7 反轉整數

給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123輸出 321示例 2 輸入 123輸出 321示例 3 輸入 120輸出 21注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 231,231 1 根據這個假設,如果反轉後的整數溢位,則返回 0。很簡單,就是不...

leetcode 7反轉整數

隨機一題 給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 231,231 1 根據這個假設,如果反轉後的整數溢位,則返...