public class 字符串转换整数 {
public static void main(String[] args) {
// 字符串转换整数 a = new 字符串转换整数();
System.out.println(myAtoi("fsaf"));
}
public static int myAtoi(String str) {
char[] chars = str.toCharArray();
int n= chars.length;
int idx=0;
// 去除空格
while (idx<n && chars[idx] == ' '){
idx++;
}
// 去除空格到末尾
if(idx == n) return 0;
boolean negative=false;
// 遇到负号
if(chars[idx] == '-'){
negative = true;
idx++;
}
// 遇到正号
else if(chars[idx] == '+'){
idx++;
}
// 遇到其他符号
else if (!Character.isDigit(chars[idx])){
return 0;
}
int ans=0;
while (idx<n && Character.isDigit(chars[idx])){
int dight = chars[idx]-'0';
if(ans>(Integer.MAX_VALUE-dight)/10){
// 本来应该是ans*10+dight>Integer.MAX_VALUE
// 但是*10和+dight都有可能越界,所以都移到右边即可
// 判断它的结果是否越界
return negative ? Integer.MIN_VALUE:Integer.MAX_VALUE;
}
ans=ans*10+dight;
idx++;
}
return negative ? -ans:ans;
}
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交