将字符串转换为整数
要考虑的情况:
- 字符串左右空格
- 杂乱的符号
- 大数溢出
class Solution {
public int myAtoi(String s) {
int len=s.length();
char[] charArray=s.toCharArray();
//1.去除前导空格
int index=0;
while(index<len && charArray[index]==' '){
index++;
}
//2.极端用例" "
if(index==len){
return 0;
}
//3.符号字符
int sign=1;
char firstChar = charArray[index];
if(firstChar=='+'){
index++;
} else if(firstChar == '-'){
index++;
sign = -1;
}
//4.将后续出现的数字字符进行转换
int res=0;
while(index<len){
char currChar = charArray[index];
//4.1先判断不合法的情况
if(currChar>'9'||currChar<'0'){
break;
}
//4.2处理正数和负数越界情况
if(res>Integer.MAX_VALUE / 10 || (res==Integer.MAX_VALUE/10 && (currChar - '0')>Integer.MAX_VALUE%10)){
return Integer.MAX_VALUE;
}
if(res<Integer.MIN_VALUE /10 || (res==Integer.MIN_VALUE/10 && (currChar - '0')> -(Integer.MIN_VALUE %10))){
return Integer.MIN_VALUE;
}
//合法的情况下,才考虑转换
res = res*10 + sign * (currChar - '0');
index++;
}
return res;
}
}