LeetCode(9) 整数反

xbdyhh · · 635 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

题目:

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。比如321转换为123
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

思路:

用除余运算计算出每一位的值,之后乘10即可得到。需要注意判别条件溢出的条件中,除了最后一次计算前,ans要小于最大整数的1/10,还需要保证在ans等于最大整数1/10时,后面加的数小于7,对负数的检测同理。

func reverse(x int) int {
   ans := 0
 y :=0
 for ;x != 0;{
      x,y = x/10,x%10
 if ans > math.MaxInt32/10 || (ans == math.MaxInt32 / 10 && y > 7) {return 0}
      if ans < math.MinInt32/10 || (ans == math.MinInt32 / 10 && y < -8){return 0}
      ans = ans*10 + y
   }
   return ans
}

image.png


有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:xbdyhh

查看原文:LeetCode(9) 整数反

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

635 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传