iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 27
1
自我挑戰組

神羅天征! 一起(爆肝)征服程式解題系列 第 27

[Day 27] LeetCode - 7 Reverse Integer

  • 分享至 

  • xImage
  •  

本篇同步發布於Blog:[解題] LeetCode - 7 Reverse Integer

平台:

LeetCode

題號:

7 - Reverse Integer

題目連結:

https://leetcode.com/problems/reverse-integer/

題目說明:

        給一個32位元的整數x,求他的位數反轉。但如果反轉後的位數會overflow,則回傳0。

比如x = 123,答案為321;x = -123,答案為-321;x = 1234567899,答案為0。

解題方法:

     建立一個long的變數ans,不斷地將x的第1位數轉成ans新的進位數。最終再用Math函式庫的abs檢查是否ans超出32位元整數的最大值,超過就回傳0,否則回傳轉型32位元的ans。

難度為Easy

程式碼 (C++ 與 C#):

#include <iostream>
#include <cmath>
#include <climits>
using namespace std;

class Solution {
public:
    int reverse(int x) {
        long ans = 0;
        while(x != 0){
            ans = ans * 10 + (x % 10);
            x /= 10;
        }
        
        return fabs(ans) > INT_MAX ? 0 : ans;
    }
};

int main() {
	Solution sol;
	cout << sol.reverse(123) << endl;
	cout << sol.reverse(-123) << endl;
	cout << sol.reverse(1234567899) << endl;
	return 0;
}
using System;
 
namespace LeetCode7
{
	public class Solution {
	    public int Reverse(int x) {
	        long ans = 0;
	        while(x != 0){
	            ans = ans * 10 + (x % 10);
	            x /= 10;
	        }
 
	        return Math.Abs(ans) > Int32.MaxValue ? 0 : (int)ans;
	    }
	}
 
	public class Program
	{
		public static void Main()
		{
			Solution sol = new Solution();
			Console.WriteLine(sol.Reverse(123));
			Console.WriteLine(sol.Reverse(-123));
			Console.WriteLine(sol.Reverse(1234567899));
			Console.Read();
		}
	}
}

GITHUB位置(C++ 與 C#):

https://github.com/u8989332/ProblemSolving/blob/master/LeetCode/C%2B%2B/1-99/7.cpp

https://github.com/u8989332/ProblemSolving/blob/master/LeetCode/C%23/1-99/7.cs


上一篇
[Day 26] LeetCode - 344 Reverse String
下一篇
[Day 28] LeetCode - 387 First Unique Character in a String
系列文
神羅天征! 一起(爆肝)征服程式解題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言