No.007:Reverse Integer
问题:
Reverse digits of an integer.
Example1:
x = 123, return 321
Example2:
x = -123, return -321
官方难度:
Easy
翻译:
将一个整数倒转输出。
例子:
整数:123,倒转输出:321。
整数:-123,倒转输出:-321。
- 给定例子中,存在负数情况,将负数的输入转化成整数统一讨论,同时记录负数标志位,在返回时使用。
- 优先获取整数的位数,有两种方法:第一种是根据定义出发,循环将输入数字除以10,累加次数。这种方法需要使用一个输入数字的副本,因为在运行过程中会改变输入的值,影响之后的操作;第二种方法,是将输入数字转化成字符串,计算字符串的长度length。显然第二种“取巧的方式”拥有更好的效率。
- 定义一个sum值累加,将每一次的输入值的最后一位乘以10的length-1次方,然后将输入除以10,直到循环结束。
- 在提交代码之后,发现一个隐藏条件,当倒转的整数超过int所能表达的最大值时该怎么办?要求方法的返回值明确为int值。LeetCode提示我,这种情况返回0。那么就需要将sum升级为long型来存储数字,再返回的时候做一次判断。
- 在考虑相反数的时候,有一种极端情况:输入值为Integer.MIN_VALUE。众所周知,负数能表达值的绝对值,比正数的最大值还要大1,这时候对它做相反数操作,这个值是不会变的。万幸,这个数的最后一位是8,这表示在倒转之后的值是0,不用再特殊考虑。
- 没有入参检查的必要。
解题代码:
public static int reverse(int x) {
// 正负的标志位
int sign = 1;
// 考虑负数转化
if (x < 0) {
x = -x;
sign = -1;
}
long sum = 0;
// 先获取位数
int length = String.valueOf(x).length();
// 取余数,乘以因子累加
while (x > 0) {
// 要先减length
sum += (x % 10) * Math.pow(10, --length);
x /= 10;
}
return sum > Integer.MAX_VALUE ? 0 : (int) sum * sign;
}
reverse
相关链接:
https://leetcode.com/problems/reverse-integer/
PS:如有不正确或提高效率的方法,欢迎留言,谢谢!
No.007:Reverse Integer的更多相关文章
- LeetCode第[7]题(Java):Reverse Integer 标签:数学
题目:Reverse Integer 难度:Easy 题目内容: Given a 32-bit signed integer, reverse digits of an integer. Note:A ...
- leetcode:Reverse Integer(一个整数反序输出)
Question:Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 ...
- LeetCode之“数学”:Reverse Integer && Reverse Bits
1. Reverse Integer 题目链接 题目要求: Reverse digits of an integer. Example1: x = 123, return 321 Example2: ...
- leetcode:Reverse Integer 及Palindrome Number
Reverse Integer Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, retur ...
- Q7:Reverse Integer
7. Reverse Integer 官方的链接:7. Reverse Integer Description : Given a 32-bit signed integer, reverse dig ...
- LeetCode专题-Python实现之第7题:Reverse Integer
导航页-LeetCode专题-Python实现 相关代码已经上传到github:https://github.com/exploitht/leetcode-python 文中代码为了不动官网提供的初始 ...
- 【LeetCode算法题库】Day3:Reverse Integer & String to Integer (atoi) & Palindrome Number
[Q7] 把数倒过来 Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Outpu ...
- lintcode :reverse integer 颠倒整数
题目: 颠倒整数 将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数). 样例 给定 x = 123,返回 321 给定 x = -123,返回 -321 解题: 直接 ...
- Reverse Integer 2015年6月23日
题目: Reverse digits of an integer. Example1: x = , return Example2: x = -, return - 思路:递归 解答: / test ...
随机推荐
- 飞鱼(FlyFish)——便捷的原型在线制作工具
关于项目原型制作,小菜先前写过一篇文章<FastUI快速界面原型制作工具>,只不过那个是用C#写的原型制作工具,但是感觉用C#写起来比较费力,而且也不太好用,经过高人指点,茅塞顿开,决定重 ...
- [翻译] AKKA笔记- ACTORSYSTEM (配置CONFIGURATION 与调度SCHEDULING) - 4(一)
原文在http://rerun.me/2014/10/06/akka-notes-actorsystem-in-progress/ 像我们前面看到的,我们可以用ActorSystem的actorof方 ...
- IE浏览器打开chorme浏览器,如何打开其他浏览器
看到这个标题是否感觉奇怪,为什么要用IE浏览器打开chorme或者火狐浏览器等,这个功能从开发者来说不是一个好的需求,但确实是真实存在的,有用公司的背景历史比较复杂,而且公司有过长期的开发历史,这导致 ...
- Linux核心源码阅读方法
首次阅读Linux4.0.5内核源代码时,一脸茫然,它的代码不仅复杂,而且庞大,找不到从哪里开始阅读. 通常Linux会有以下目录 arch 子目录包括所有和体系结构相关的核心代码.它还有更深的子目录 ...
- webservice返回值为Map类型的处理方法
在写一个webservice的时候,方法的返回值是一个复杂类型,处理方法是写一个结果类(Javabean)作为返回值.想着webservice方法返回值为Map的没写过,然后就试着写了一个简单的Dem ...
- WebService中使用Aspose.Cells.dll
首先,目前我是在Json里面使用的,然后关于HTML+WebService+Json怎么使用,可以看看Jsonp跨域的相关例子. 本次的实现原理是:通过HTML传送参数到WebService,然后在W ...
- iOS开发之SQLite--C语言接口规范(三)——Binding Values To Prepared Statements
在前面的博客中已经介绍了如何连接SQLite数据库,并且简单的查询和遍历结果集.在前面用到了sqlite3_stmt *stmt,也就是预编译后的SQL语句.在本篇博客中会了解一下sqlite3_st ...
- MyCAT报java.lang.OutOfMemoryError: Java heap space
早上同事反映,mycat又假死了,估计还是内存溢出,查看了一下错误日志. INFO | jvm | // :: | java.lang.OutOfMemoryError: Java heap spac ...
- RESTful API URI 设计: 判断资源是否存在?
相关的一篇文章:RESTful API URI 设计的一些总结. 问题场景:判断一个资源(Resources)是否存在,URI 该如何设计? 应用示例:判断 id 为 1 用户下,名称为 window ...
- iOS homekit使用说明
本文由CocoaChina翻译组成员iBenjamin_Go和浅夏@旧时光翻译自苹果开发文档:HomeKit Developer Guide,敬请勘误. 本文档内容包括 第一部分:简介 第二部分:启用 ...