题解 | #把字符串转换成整数(atoi)#
把字符串转换成整数(atoi)
http://www.nowcoder.com/practice/d11471c3bf2d40f38b66bb12785df47f
我们根据题意,只需要处理以下几种情况 1、首位空格:通过trim()函数即可处理 2、正负:通过判断第一位,使用变量储存符号即可 3、非数字字符:对每一位进行判断,非数字则结束 4、越界:通过提前预判,判断拼接后是否大于阈值,进行处理 。
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return int整型
*/
public int StrToInt (String s) {
char[] array = s.trim().toCharArray();
//去除字符串之前的空格
array = s.trim().toCharArray();
if(array.length==0)
return 0;
int symbol=1;
long sum=0;
int num=0;
int i=0;
//识别有无正负号
if(array[i] == '+' || array[i] == '-'){
symbol = array[i] == '+' ? 1 : -1;
i++;
}
//识别有效整数数字
while(i < array.length){
char cur = array[i];
if(cur < '0' || cur > '9'){
break;
}
sum = sum * 10 + (cur - '0');
i++;
sum = sum * symbol;
if(sum>Integer.MAX_VALUE){
num = Integer.MAX_VALUE;
return num;
}
else if(sum<Integer.MIN_VALUE){
num = Integer.MIN_VALUE;
return num;
}
sum = sum * symbol;
}
sum = sum * symbol;
num = (int)sum;
//返回结果
return num;
}
}
