From 8956efa7c312048f025d749c4005b7b34ecd0f76 Mon Sep 17 00:00:00 2001 From: Xevion Date: Thu, 14 Jan 2021 19:38:24 -0600 Subject: [PATCH] string-to-integer-atoi solution java --- string-to-integer-atoi/Solution.java | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 string-to-integer-atoi/Solution.java diff --git a/string-to-integer-atoi/Solution.java b/string-to-integer-atoi/Solution.java new file mode 100644 index 0000000..ddf85a6 --- /dev/null +++ b/string-to-integer-atoi/Solution.java @@ -0,0 +1,32 @@ +// Accepted +// Runtime: 1 ms +// Memory Usage: 38.9 MB +// Submitted: January 14th, 2021 + +class Solution { + public int myAtoi(String s) { + int sign = 1; + int i = 0; + int result = 0; + if (s.length() == 0) return 0; + + // Skip through whitespace + while (i < s.length() && s.charAt(i) == ' ') + i++; + + // If there is a sign present, extract it + if (i < s.length() && (s.charAt(i) == '-' || s.charAt(i) == '+')) + if (s.charAt(i++) == '-') + sign = -1; + + while (i < s.length() && Character.isDigit(s.charAt(i))) { + if (result > Integer.MAX_VALUE / 10 || (result == Integer.MAX_VALUE / 10 && s.charAt(i) - '0' > Integer.MAX_VALUE % 10)) { + return (sign == 1) ? Integer.MAX_VALUE : Integer.MIN_VALUE; + } + + result = (result * 10) + (s.charAt(i++) - '0'); + } + + return result * sign; + } +} \ No newline at end of file