LeetCode-探索-初级-字符串-整数反转-java
2019-01-02 10:14
501 查看
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
[code]输入: 123 输出: 321
示例 2:
[code]输入: -123 输出: -321
示例 3:
[code]输入: 120 输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
方法很多,第一种方法:
只要是涉及反转的,首先想到数组中的反转方法:
1 将int转化为String,进而转化为char[]
2 在char[]中完成反转
3 判断是否溢出
[code]public int reverse(int x) { int signal = 1; if (x < 0) signal = -1; String target = signal * x + ""; //omit the signal char[] chars = target.toCharArray(); char temp = 0; int symmetryI = 0; for (int i = 0 ; i < target.length() >> 1 ; i ++) { symmetryI = target.length() - 1 - i; temp = chars[i]; chars[i] = chars[symmetryI]; chars[symmetryI] = temp; } int result = 0; try { result = signal * Integer.parseInt(new String(chars)); } catch (NumberFormatException e) { result = 0; } return result; }
第二种方法:
凡是涉及到反转的,很难让人不想到栈这个数据结构,是的,我们可以通过栈来进行反转:
[code]public int reverse1(int x) { java.util.Stack stack = new java.util.Stack(); int signal = 1; if (x < 0) signal = -1; String target = signal * x + ""; char[] chars = target.toCharArray(); for (int i = 0 ; i < chars.length ; i ++) stack.push(chars[i]); for (int i = 0 ; i < chars.length ; i ++) chars[i] = (char)stack.pop(); int result = 0; try { result = Integer.parseInt(new String(chars)); } catch (NumberFormatException e) { result = 0; } return signal * result; }
第三种方法:
因为是整数类型的,(或者说是数值类型的更加合适),我们可以利用数学的方法进行一个数字的倒置。
值得一提的是数字反转需要考虑到溢出问题:
[code]public int reverse0(int x) { int result = 0; while (x != 0) { int digit = x % 10; //get the last digit of x. if (result > Integer.MAX_VALUE / 10 || (result == Integer.MIN_VALUE / 10 && digit > 7) || result < Integer.MIN_VALUE / 10 || (result == Integer.MIN_VALUE / 10 && digit < -8)) return 0; result = result * 10 + digit; x = x / 10; //make the digit before the last become the last one. } return result; }
相关文章推荐
- LeetCode-探索-初级-字符串-有效的字母异位词-java
- LeetCode-探索-初级-字符串-字符串中的第一个唯一字符-java
- 【LeetCode-面试算法经典-Java实现】【008-String to Integer (atoi) (字符串转成整数)】
- leetcode解题之344. Reverse String & 345. Reverse Vowels of a String Java版(反转字符串)
- leetcode初级算法 字符串1 反转字符串
- leetcode 7 使用字符串操作反转整数
- 【LeetCode-面试算法经典-Java实现】【008-String to Integer (atoi) (字符串转成整数)】
- 【leetcode】Reverse Integer整数反转----Java代码实现
- LeetCode探索模块初级算法字符串章节python3代码实现
- leetcode初级算法字符串2 颠倒整数
- 【LeetCode-面试算法经典-Java实现】【151-Reverse Words in a String(反转字符串中的单词)】
- Java反转字符串和相关字符编码问题
- JAVA实现字符串反转,借助字符数组实现
- LeetCode 8. String to Integer (atoi) (字符串到整数)
- JAVA实现字符串反转,借助字符数组实现
- 中文字符串转为long型整数。(输入保证在long的范围内)java实现
- leetcode Reverse Words in a String III 反转字符串中的单词
- java实现字符串反转
- LeetCode探索模块初级算法链表章节python3代码实现
- java基础之字符串反转