【LeetCode】Easy: Reverse Integer
Reverse Integer
https://leetcode.com/problems/reverse-integer/
自分の回答
Swift
🤦 Wrong Answer
class Solution { func reverse(_ x: Int) -> Int { var xx: Int = x var array = [Int]() while xx != 0 { array.append(xx % 10) xx = xx / 10 } return array.reversed().enumerated().reduce(into: 0) { (result, iterator) in result += iterator.element * Int(pow(10, Double(iterator.offset))) } } }
オーバーフローの考慮ができていなかった。
回答例
https://leetcode.com/problems/reverse-integer/solution/
- pop, push で考える
- 32bitでオーバーフローしたら0を返す方法を探す
回答例を見て修正
class Solution { func reverse(_ x: Int) -> Int { var x: Int = x var output: Int32 = 0 while x != 0 { let pop: Int = x % 10 x = x / 10 let multiply = output.multipliedReportingOverflow(by: 10) if multiply.overflow { return 0 } let add = multiply.partialValue.addingReportingOverflow(Int32(pop)) if add.overflow { return 0 } output = add.partialValue } return Int(output) } }
感想
- 難しかった