g0001_0100.s0008_string_to_integer_atoi.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java Show documentation
Show all versions of leetcode-in-java Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g0001_0100.s0008_string_to_integer_atoi;
// #Medium #Top_Interview_Questions #String #2023_08_09_Time_1_ms_(100.00%)_Space_41_MB_(98.97%)
public class Solution {
public int myAtoi(String str) {
if (str == null || str.length() == 0) {
return 0;
}
int i = 0;
boolean negetiveSign = false;
char[] input = str.toCharArray();
while (i < input.length && input[i] == ' ') {
i++;
}
if (i == input.length) {
return 0;
} else if (input[i] == '+') {
i++;
} else if (input[i] == '-') {
i++;
negetiveSign = true;
}
int num = 0;
while (i < input.length && input[i] <= '9' && input[i] >= '0') {
// current char
int tem = input[i] - '0';
tem = negetiveSign ? -tem : tem;
// avoid invalid number like 038
if (num == 0 && tem == '0') {
i++;
} else if (num == Integer.MIN_VALUE / 10 && tem <= -8 || num < Integer.MIN_VALUE / 10) {
return Integer.MIN_VALUE;
} else if (num == Integer.MAX_VALUE / 10 && tem >= 7 || num > Integer.MAX_VALUE / 10) {
return Integer.MAX_VALUE;
} else {
num = num * 10 + tem;
i++;
}
}
return num;
}
}