翻轉整數演算法

2021-10-06 00:07:06 字數 997 閱讀 3550

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

注意

假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−231, 231 − 1]。請根據這個

假設,如果反轉後整數溢位那麼就返回 0。

方法一、 翻轉字串方法

如果將數字看成是有符號位的字串,那麼我們就能夠通過使用 js 提供的字串方法來實現非符 號部分的翻轉,又因為整數的翻轉並不影響符號,所以我們最後補充符號,完成演算法。

首先設定邊界極值;

使用字串的翻轉函式進行主邏輯;

補充符號

然後拼接最終結果

複雜度分析

方法二 、類似 歐幾里得演算法 求解

我們借鑑歐幾里得求最大公約數的方法來解題。符號的處理邏輯同方法一,這裡我們通過模 10 取 到最低位,然後又通過乘 10 將最低位迭代到最高位,完成翻轉。

設定邊界極值;

取給定數值的絕對值,遍歷迴圈生成每一位數字,借鑑歐幾里得演算法,從 num 的最後一位開

始取值拼成新的數

同步剔除掉被消費的部分

如果最終結果為異常值,則直接返回 0;如果原本資料為負數,則對最終結果取反

返回最終結果

複雜度分析

LeetCode 整數翻轉

中文版無需翻牆哦!給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據...

reverse interger 整數翻轉

一 計算機中32位int型別變數的範圍,其中int型別是帶符號整數。正數在計算機中表示為原碼,最高位為符號位 1的原碼為0000 0000 0000 0000 0000 0000 0000 0001 2147483647的原碼為0111 1111 1111 1111 1111 1111 1111 1...

題目 翻轉整數

這道題我覺得應該用二進位制位移來做比較快,但是懶得想了就寫了乙個最普通的方法 static const auto io speed up class solution 結果超過了99.69 真滴好奇比這個還慢的是怎麼做的。之所以說這個最簡單,是因為從返回型為int和要求64位可以得到leetcode...