diff --git a/Java/String to integer/solution2.java b/Java/String to integer/solution2.java new file mode 100644 index 0000000..affe03a --- /dev/null +++ b/Java/String to integer/solution2.java @@ -0,0 +1,29 @@ +class Solution { + public int myAtoi(String s) { + s = s.trim(); + if (s.isEmpty()) { + return 0; + } + + int ans = 0, i = 0; + boolean neg = s.charAt(0) == '-'; + boolean pos = s.charAt(0) == '+'; + + if (neg || pos) { + i++; + } + + while (i < s.length() && Character.isDigit(s.charAt(i))) { + int digit = s.charAt(i) - '0'; + + if (ans > Integer.MAX_VALUE / 10 || (ans == Integer.MAX_VALUE / 10 && digit > Integer.MAX_VALUE % 10)) { + return neg ? Integer.MIN_VALUE : Integer.MAX_VALUE; + } + + ans = ans * 10 + digit; + i++; + } + + return neg ? -ans : ans; + } +}