LeetCode – ReverseInteger
Given a signed 32-bit integer x
, return x
with its digits reversed. If reversing x
causes the value to go outside the signed 32-bit integer range [-231, 231 - 1]
, then return 0
.
Assume the environment does not allow you to store 64-bit integers (signed or unsigned).
Example 1:
Input: x = 123 Output: 321
Example 2:
Input: x = -123 Output: -321
Example 3:
Input: x = 120 Output: 21 看起來很單純的題目 我第一階段的暴力解 是取餘數* 10的(長度-1)次方,每次長度都--; 結果在 大數處理的時候溢位問題很多 寫法最終如下 namespace TestProject1.Reverse_Integer; public class ReverseInteger { public int Reverse(int x) { var s = 0; while (x != 0) { var r = x % 10; var temp = s * 10 + r; if ((temp - r) / 10 != s) //避免溢位問題 return 0; s = temp; x /= 10; } return s; } } using FluentAssertions; using NUnit.Framework; using TestProject1.Reverse_Integer; public class ReverseIntegerTest { [SetUp] public void Setup() { } [Test] public void Test001() { ReverseInteger ts = new ReverseInteger(); var result = ts.Reverse(123); result.Should().Be(321); } [Test] public void Test002() { ReverseInteger ts = new ReverseInteger(); var result = ts.Reverse(-123); result.Should().Be(-321); } [Test] public void Test003() { ReverseInteger ts = new ReverseInteger(); var result = ts.Reverse(120); result.Should().Be(21); } [Test] public void Test004() { ReverseInteger ts = new ReverseInteger(); var result = ts.Reverse(1534236469); result.Should().Be(0); } [Test] public void Test005() { ReverseInteger ts = new ReverseInteger(); var result = ts.Reverse(32768); result.Should().Be(86723); } }