new 把字符串转换成整数 怎样判断溢出???

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/mengmengkuaipao/article/details/102755599

题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0

输入

+2147483647
1a33
输出

2147483647
0

public class Solution {
    public int StrToInt(String str) {
        int n=str.length(),s=1;
        int res=0;
        char[] chars=str.toCharArray();
        if(n==0)
            return 0;
        if(chars[0]=='-')
            s=-1;
        if(chars[0]=='+')
            s=1;
        for(int i = (chars[0] ==  '-' || chars[0] == '+') ? 1 : 0; i < n; ++i){
            if(!('0' <= chars[i] && chars[i] <= '9')) return 0;
            res = (res << 1) + (res << 3) + (chars[i] & 0xf);//res=res*10+str[i]-'0';
        } 
       
        if( ((s>0) && (res > 0x7FFFFFFF)) || ((s<0) && (res > 0x80000000)) )//怎样判断溢出??
            return 0;
        return res * s;
    }
}

猜你喜欢

转载自blog.csdn.net/mengmengkuaipao/article/details/102755599
今日推荐