实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数。
样例
"10" =>10
"-1" => -1
"123123123123123" => 2147483647
"1.0" => 1
代码
public class Solution {
/*
* @param str: A string
* @return: An integer
*/
public int atoi(String str) {
// Start typing your Java solution below
// DO NOT write main() function
if (str == null) {
return 0;
}
// 去掉字符串首尾的空格
str = str.trim();
if (str.length() == 0) {
return 0;
}
int sign = 1;
int index = 0;
// 判断字符串中数字是正数还是负数
if (str.charAt(index) == '+') {
index++;
} else if (str.charAt(index) == '-') {
sign = -1;
index++;
}
long num = 0;
for (; index < str.length(); index++) {
// 字符串内部出现非数字字符
if (str.charAt(index) < '0' || str.charAt(index) > '9') {
break;
}
// 求出字符中数字的绝对值
num = num * 10 + (str.charAt(index) - '0');
if (num > Integer.MAX_VALUE ) {
break;
}
}
if (num * sign >= Integer.MAX_VALUE) {
return Integer.MAX_VALUE;
}
if (num * sign <= Integer.MIN_VALUE) {
return Integer.MIN_VALUE;
}
return (int)num * sign;
}
}