第49题“把字符串转换成整数”

题目描述

时间限制:1秒 空间限制:32768K 热度指数:231856

解答:

1、将字符串先转化成字符数组,再转化成数字(利用ASCII码),如果第一个字符是 ‘-’ 要额外处理。

2、用long类型变量来进行   整数越界问题的判断!!!

public class Solution {
    public int StrToInt(String str) {
	        if(str == null || str.length() == 0){
	            return 0;
	        }
	      //因为int类型数组越界时会出现异常,所以,用long类型来判断是否越界
	        long sum = 0;
	        int res = 0;
	        int i = 0;
	        boolean sign = true;//默认是正数
	        char [] charArr = str.toCharArray();//转为字符数组
	        if(charArr[0] == '-'){//说明是负数
	            sign = false;
	            i = 1;//从字符数组第一位开始算起
	        }
	        for(;i < charArr.length;i++){
	            if(charArr[i] == '+'){
	                continue;
	            }
	            if(charArr[i] > '9' || charArr[i] < '0'){//说明不符合数字类型定义了
	                return 0;
	            }
	            sum = sum*10 + charArr[i] - '0';
	            //判断是否越过正数或负数的界限
	            if((sign && sum > 0X7fffffff) || (!sign && sum*(-1) < 0X80000000)){
	                sum = 0;
	                break;
	            }
	        }
	        res = (int) sum;
	        return sign ? res : res * -1;
	    }
}
发布了79 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u010917150/article/details/102527969