7. 整數反轉

題目

給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
示例 1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
示例 3:
輸入: 120
輸出: 21
注意:
假設我們的環(huán)境只能存儲得下 32 位的有符號整數,則其數值范圍為 [?231, 231 ? 1]。請根據這個假設,如果反轉后整數溢出那么就返回 0。

解題:

 public int reverseOwn(int x ){
        //為了反轉,首先想到的是得拿個位、十位、百位、千位等位上的數;
        //如何拿?把整型轉字符串,再依次取每個位上的數字,拿完再反轉,好像不是這道題考驗我們的本意;
        //所以還是按照數學思維:假設現在數據是321,想拿到1 ,321除10的余數就可以,那么如何拿到2呢?
        //想想,是不是還是按照之前的思路,但只不過是32除10的余數?這樣也無需考慮正負數的問題。
        //所以總結上面的思路就是:x%10(得到當前的個位),再x/10,為取下一個個位數做準備。一直循環(huán)到x!=0.
        //防止溢出,先用long接收
        long rev=0;
        while (x!=0){
            int p = x%10;
            x=x/10;
            rev = rev*10 + p;
            //防止每次循環(huán)完的rev,可能已溢出的問題,考慮反轉后不溢出的問題,溢出則返回0
            if(rev>Integer.MAX_VALUE||(rev<Integer.MIN_VALUE)){
                return 0;
            }
        }
        return (int)rev;
}

結果

執(zhí)行用時 :3 ms, 在所有 Java 提交中擊敗了95.97%的用戶
內存消耗 :34.6 MB, 在所有 Java 提交中擊敗了77.84%的用戶

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 需求 給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。 示例 1:輸入: 123輸出: 3...
    惑也閱讀 981評論 0 1
  • 題目描述:題目難度:簡單給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。 示例 1:輸入:...
    LeeYunFeng閱讀 628評論 0 47
  • 給出一個 32 位的有符號整數,將這個整數中每位上的數字進行反轉。示例 1:輸入: 123輸出: 321示例 2:...
    餅干不干閱讀 466評論 0 50
  • 牛人尖子班第一天貓叔把問題回歸到定位,通過自己的例子讓大家去找尋自己的三個關鍵詞,恍惚回到了去年牛班第一天的人生四...
    大白雪閱讀 686評論 6 11
  • 昨天,寫了過年的領導篇,工作嘛,事關經濟基礎建設,當然要放首席。接下來,家長里短的,要說說個人了,word天,還沒...
    太后老三閱讀 219評論 0 3

友情鏈接更多精彩內容