题目链接
1.去除前导空格
2.第一个字符是数字吗
3.第一个字符是'+'吗
4.第一个字符是'-'吗
5.后边的每个字符是数字吗
class Solution {
public int myAtoi(String s) {
char[] chars = s.toCharArray();
int n = chars.length;
int index = 0;
while(index<n && chars[index] == ' '){
//去掉前导空格
index++;
}
if(index == n){
//如果去掉前导空格后到末尾
return 0;
}
//是否为负
boolean negative = false;
if(chars[index] == '-'){
negative = true;
index++;
}else if(chars[index] == '+'){
index++;
}else if(!Character.isDigit(chars[index])){
return 0;
}
int ans = 0;
while(index<n && Character.isDigit(chars[index])){
//将后边连续的数字字符转换成数字
int digit = chars[index] -'0';
//判断是否越界
if(ans>(Integer.MAX_VALUE - digit)/10){
return negative?Integer.MIN_VALUE : Integer.MAX_VALUE;
}
ans = ans * 10 + digit;
index++;
}
return negative? -ans : ans;
}
}