iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0
佛心分享-刷題不只是刷題

只是單純想刷題XD系列 第 7

只是單純想刷題XD Day7

  • 分享至 

  • xImage
  •  

今天又是適合每日一刷的一天
我們今天就來講講第七題:Reverse Integer

題目

https://ithelp.ithome.com.tw/upload/images/20240919/201603204LbnEahvn3.jpg

題目翻譯

給定一個 32 位有符號整數,將整數中的數字進行反轉

解題思路

1.初始化結果變數:
定義一個變數 ans,用來存儲反轉後的結果。

2.逐位反轉數字:
使用 while 迴圈來提取輸入數 x 的最後一位數字,並將該數字加到 ans 的末尾,然後去掉 x 的最後一位數字。

3.檢查溢出:
每次將數字加入到 ans 前,檢查結果是否會超過 32 位整數範圍。若會溢出則立即返回 0。

4.返回反轉後的結果:
如果沒有溢出,返回 ans,否則返回 0。

code

class Solution {
public:
    int reverse(int x) {
        int ans = 0;
        while (x != 0) {
            int digit = x % 10;  // 取出最後一位數字
            // 檢查是否會溢出
            if (ans > INT_MAX / 10 || (ans == INT_MAX / 10 && digit > 7)) return 0;
            if (ans < INT_MIN / 10 || (ans == INT_MIN / 10 && digit < -8)) return 0;
            ans = ans * 10 + digit;  // 將數字加入到反轉結果
            x /= 10;  // 去掉最後一位數字
        }
        return ans;
    }
};


上一篇
只是單純想刷題XD Day6
下一篇
只是單純想刷題XD Day8
系列文
只是單純想刷題XD30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言