题目描述
实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数。
样例1
输入: "10"
输出: 10
样例2
输入: "1"
输出: 1
样例3
输入: "123123123123123"
输出: 2147483647
说明: 因为 123123123123123 > INT_MAX, 所以我们返回INT_MAX
样例4
输入: "1.0"
输出: 1
说明: 我们只需要转换第一个有效数字
题解
比起自己刷题,有大神带着刷肯定更好,专业的算法课程(点击免费试听)可以随问随答,在最短时间内提高算法水平,应对大厂面试。
public class Solution {
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;
}
}