/**
这题就是要细心,首先要通过循环去掉前面的空格
然后看看有没有正号或者负号,或者没有符号
再看看数字有没有越界
*/
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 res=0;
while(index<n && Character.isDigit(chars[index])){
// 获取字符串数字的单个数字
int digit = chars[index] - '0';
// System.out.println(digit);
if(res >(Integer.MAX_VALUE - digit)/10){
// 本来应该是 ans * 10 + digit > Integer.MAX_VALUE
// 但是 *10 和 + digit 都有可能越界,所有都移动到右边去就可以了。
return negative ? Integer.MIN_VALUE : Integer.MAX_VALUE;
}
res = res * 10 + digit;
index++;
}
return negative ? -res : res;
}
}
SB工作太多,都没时间看大佬怎么写的
标签:10,digit,index,res,VALUE,atoi,字符串,Integer,Leetcode From: https://www.cnblogs.com/PaturNax/p/16705779.html