题目描述
时间限制: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;
}
}