/*
判定是否为空
trim 后是否长度为0
开始字符如果不是数字或者符号 return 0;
sign = 1;
如果开始为‘-’ sign = -1;
start + 1;
设置num 为long类型 然后 如果字符是数字 则 *10 叠加;
同时判断是否越界;
*/
class Solution {
public int myAtoi(String str) {
if(str == null) return 0;
str = str.trim();
if(str.length() == 0) return 0;
if(!(str.charAt(0) == '-' || str.charAt(0) == '+' || (str.charAt(0) <= '9' && str.charAt(0) >= '0'))) return 0;
int sign = 1;
long num = 0;
int start = 0;
if(str.charAt(0) == '-') {
sign = -1;
start += 1;
}
if(str.charAt(0) == '+') {
start += 1;
}
for(; start < str.length(); start++) {
if(str.charAt(start) <= '9' && str.charAt(start) >= '0') {
num = num * 10 + (str.charAt(start) - '0');
if(num > Integer.MAX_VALUE) {
return (int)(num = sign == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE);
}
}else {
break;
}
}
return (int)(num * sign);
}
}
网友评论