题解 | #把字符串转换成整数(atoi)#

把字符串转换成整数(atoi)

https://www.nowcoder.com/practice/d11471c3bf2d40f38b66bb12785df47f

public int StrToInt (String s) {
        //判断空
        if(s.length()==0) return 0;
        int index=0;//记录下标的一个指针
        //去掉前导空格
        for (int i = 0; i < s.length(); i++) {
            if(s.charAt(i)==' '){
                index++;//后移
            }else{
                break;
            }
        }
        System.out.println("index:"+index);
        //越过前导空格后什么也没有了
        if(index == s.length()) return 0;
        //判断正负号
        int flag=1;
        if(s.charAt(index)=='-'){
            flag=-1;//变负数
            index++;
        }else if(s.charAt(index)=='+'){//变正数
            index++;
        }
        long res=0;//存最终结果的
        for (int i = index; i < s.length(); i++) {
            if(s.charAt(i)>='0' &&  s.charAt(i)<='9'){
                res= res*10 + (s.charAt(i)-'0');
                //System.out.println("res="+res);
                // 半路已经溢出了,所以要半路处理,放在循环中
                //处理越界的数,分正负数,如果把以下代码放在循环外
                //则正数的直接会溢出变成负数,数据就错了
                if(flag>0 && res>Integer.MAX_VALUE){
                    return Integer.MAX_VALUE;
                }
                if(flag<0 && res*(-1)<Integer.MIN_VALUE){
                    return Integer.MIN_VALUE;
                }
            }else{
                break;
            }
        }
        return (int)(flag*res) ;
    }

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务