LeetCode之路——Reverse Integer

来源:互联网 发布:网络批发城 编辑:程序博客网 时间:2024/06/05 19:01

题目要求:将一个整数倒置,若溢出则返回0;
思路:我的思路是先将整数转成字符串,然后字符串倒置,用一个标志记录正负,先将传入值取绝对值,最后再加上符号。
贴上代码:

class Solution {    public int reverse(int x) {        if(x>Integer.MAX_VALUE || x<Integer.MIN_VALUE)            return 0;        boolean flag=false;//当flag为false时,x为正数,反之为负数        if(x<0)        {            flag=true;            x=Math.abs(x);        }        String res = Integer.toString(x);        //System.out.println(res);        String solu ="";        int i=0,len=res.length();        for(i=len-1;i>=0;i--)        {            solu+=res.charAt(i);        }        double j=Double.parseDouble(solu);        if(j>Integer.MAX_VALUE || j<Integer.MIN_VALUE)            return 0;        i=(int)j;        if(flag)        {            return -i;        }        return i;            }}

网上大神代码:

class Solution_ReverseInteger {    public int reverse(int x) {        int result=0;        while(x!=0)        {            int tail =x%10;            int newResult = result*10+tail;            if((newResult-result)/10!=result)//若不成立則溢出                return 0;            result=newResult;            x/=10;        }        return result;    }}

总结:不要忽视任意细节,考虑到各种情况,从《信息安全》这门课学习到:暴露给用户可输入的接口必须都要经过输入过滤,永远都要想象用户是恶意的!

0 0
原创粉丝点击