标签:blog io ar for java on 2014 问题 log
昨天晚上临睡前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)
这个可能要考虑的完备性问题更多,欢迎大家讨论,回头再发这个实现。
标签:blog io ar for java on 2014 问题 log
原文地址:http://blog.csdn.net/er234ut/article/details/41821617