整数操作中判断是否会超出其范围

在很多题中会遇到例如字符串转换整型,整型反转,这就涉及到Integer类型的范围,INT_MAX (2147483647) or INT_MIN (-2147483648),在逐位进行计算中,要对其结果进行判断,例如以下leetocde第八题 自己写一个atoi函数,字符串转整型

	if(( Integer.MAX_VALUE/10 < sum )||( Integer.MAX_VALUE/10 == sum&&Integer.MAX_VALUE%10
   这个判断就是关键所在,在每一次sum*10+digit之前先进行判断,最大值操作后是否还满足该要求。 又因为最小值的绝对值比最大值还大一,所以只需要跟最大值进行比较就可以。

public static int myAtoi(String str) {
        String newstr = str.trim();//去掉开头空格
        int len = newstr.length();
        if(len == 0)
        	return 0;
        int index = 0;//
        int sign = 1;//符号位,没有符号位默认为+
        int sum = 0;
        if(newstr.charAt(index)=='+'||newstr.charAt(index)=='-')
        {
        	sign = newstr.charAt(index)=='+'?1:-1;//
        	index++;
        	}
        while(index 9)
        		break;
        	if(( Integer.MAX_VALUE/10 < sum )||( Integer.MAX_VALUE/10 == sum&&Integer.MAX_VALUE%10


你可能感兴趣的:(算法,leetcode)