首页 > 其他 > 详细

剑指 Offer 67. 把字符串转换成整数

时间:2021-03-30 00:22:58      阅读:21      评论:0      收藏:0      [点我收藏+]

有一个小问题,首先用if(str == null) return 0;来判断特殊输入,这样是不行的。

后来用if(str.length() == 0)来判断,也是不行的。

因为可以有一个空字符,后面会越界。

正确的方法是在str.trim().toCharArray()后判断字符数组c的长度。

 

*还有就是判断越界可以用除10的结果与上次结果比较,很巧妙。

剑指 Offer 67. 把字符串转换成整数

class Solution {
    public int strToInt(String str) {
        //if(str.length() == 0) return 0;
        char[] c = str.trim().toCharArray();
        if(c.length == 0) return 0;
        int sign = 1, i = 1;
        int res = 0,tmp = 0;
        //判断正负号
        if(c[0] == ‘-‘)
            sign = -1;
        else if(c[0] != ‘+‘)
            i = 0;
        for(int j = i; j < c.length; j++){
            if(c[j] >‘9‘ || c[j] < ‘0‘)
                break;
            tmp = res;
            res = res * 10 + (c[j] - ‘0‘); 
            //如果除10的结果和上一次的计算结果不同,意味发生越界。
            if(tmp != (res /10))
                return sign == 1 ? Integer.MAX_VALUE :Integer.MIN_VALUE;
        }
        //最简单写成 return res*sign;
        if(sign == -1)
            res = -res;
        return res;
    }
}

 

剑指 Offer 67. 把字符串转换成整数

原文:https://www.cnblogs.com/deerlet/p/14594381.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!