让我们一起学会反转整数

开发 前端
给定一个有符号的 32 位整数 x,返回其数字反转的 x。 如果反转 x 导致值超出有符号的 32 位整数范围 -$2^31$ <= x <= $2^31$ - 1,则返回 0。

[[436853]]

本文转载自微信公众号「Swift社区」,作者Swift君。转载本文请联系Swift社区公众号。

难度水平:中等

1. 描述

给定一个有符号的 32 位整数 x,返回其数字反转的 x。 如果反转 x 导致值超出有符号的 32 位整数范围 -$2^31$ <= x <= $2^31$ - 1,则返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

2. 示例

示例 1

  1. 输入: x = 123 
  2.  
  3. 输出: 321 

示例 2

  1. 输入: x = -123 
  2.  
  3. 输出: -321 

示例 3

  1. 输入: x = 120 
  2.  
  3. 输出: 21 

示例 4

  1. 输入: x = 0 
  2.  
  3. 输出: 0 

约束条件:

  1. -$2^31$ <= x <= $2^31$ - 1 

3. 答案

  1. class ReverseInteger { 
  2.     func reverse(_ x: Int) -> Int { 
  3.         var res = 0 
  4.         var x = x 
  5.         while x != 0 { 
  6.             if res > Int(Int32.max) / 10 || res < Int(Int32.min) / 10 { 
  7.                 return 0 
  8.             } 
  9.             res = res * 10 + x % 10 
  10.             x = x / 10 
  11.         } 
  12.         return res 
  13.     } 
  • 主要思想:使用 % 10 反向迭代数字的数字,并使用 * 10 相应地更新结果。

 

  • 注意:适时处理整数溢出。
  • 时间复杂度: O(n)
  • 空间复杂度: O(1)

 

责任编辑:武晓燕 来源: Swift社区
相关推荐

2022-03-31 18:59:43

数据库InnoDBMySQL

2021-08-27 07:06:10

IOJava抽象

2021-12-29 08:27:05

ByteBuffer磁盘服务器

2022-03-08 17:52:58

TCP格式IP

2021-07-15 07:23:28

Singlefligh设计

2016-09-06 10:39:30

Dell Techno

2022-02-14 10:16:22

Axios接口HTTP

2022-06-26 09:40:55

Django框架服务

2022-02-14 07:03:31

网站安全MFA

2023-08-14 08:38:26

反射reflect结构体

2022-07-10 23:15:46

Go语言内存

2023-08-02 08:35:54

文件操作数据源

2022-08-01 07:57:03

数组操作内存

2012-04-14 20:47:45

Android

2021-07-31 11:40:55

Openresty开源

2021-12-16 12:01:21

区块链Libra货币

2014-02-25 08:59:14

2021-11-09 23:54:19

开发SMI Linkerd

2022-12-05 09:10:21

2021-11-04 06:58:31

CSS性能设备
点赞
收藏

51CTO技术栈公众号