首页 > 代码库 > LeetCode:Reverse Integer
LeetCode:Reverse Integer
昨天晚上临睡前A掉的。这道题依然很水。
题目描述:给定一个int数,将各位翻转以后输出。
tip:这道题本身很简单,重要的是如何把情况考虑全面。比如:1、int数翻转以后溢出的问题。2、数的结尾有0,翻转以后如何输出的问题,比如100。
代码:
public class Solution { final static int max = 2147483647; final static int testMax = 214748364; final static int min = -2147483648; final static int testMin = -214748364; public int reverse(int x) { int sum = 0; boolean flg = false; if(x<0) flg = true; while(x!=0) { if(!flg) { if(sum > testMax || (sum==testMax && (x%10)>7)) return 0; } else { if(sum < testMin || (sum==testMin && (x%10)<-8)) return 0; } sum*=10; sum+=(x%10); x/=10; } return sum; } }
这道题还有一种解法就是利用数组,代码量略高,但是利于理解。下面贴一下我用数组实现的代码(在我同学基础上改的),比较丑陋,将就看吧。
public class Solution { public int reverse(int x) { long sum = 0; boolean flg = false; if(x<0) flg = true; //负数 String str = String.valueOf(x); char[] strArray = str.toCharArray(); for(int i = (flg?1:0); i < strArray.length; i++) { sum += (strArray[i]-'0')*Math.pow(10, flg?(i-1):i); } if(flg) sum = -1*sum; if(sum>=Integer.MIN_VALUE && sum<=Integer.MAX_VALUE) return (int)sum; else return 0; } }
函数原型为:int atoi(char* str)
这个可能要考虑的完备性问题更多,欢迎大家讨论,回头再发这个实现。
LeetCode:Reverse Integer
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。