Problem
Implement the simple stringToInteger(string s) function, which converts a string
to a 32-bit signed integer.
The algorithm for stringT oInteger(string s) is as follows:
1. Whitespace: Ignore any leading whitespace (” “).
2. Signedness: Determine the sign by checking if the next character is ‘-’ or
‘+’, assuming positivity is neither present.
3. Conversion: Read the integer by skipping leading zeros until a non-digit
character is encountered or the end of the string is reached. If no digits
were read, then throw an exception.
4. Rounding: If the integer is out of the 32-bit signed integer range [-2ˆ31,
2ˆ31- 1], then round the integer to remain in the range. Specifically,
integers less than -231 should be rounded to -2ˆ31, and integers greater
than 2ˆ31- 1 should be rounded to 2ˆ31- 1.
Return the integer as the final result.
The function should not use internal library function like parseInt or
parseFloat.
Constraints:
• 0 <= s.length <= 200
• s consists of English letters (lower-case and upper-case), digits (0-9), ’
‘,’+‘,’-‘, and’.’.
Example 1
• Input: s = “42”
• Output: 42
Explanation: The underlined characters are what is read in and the caret is
the current reader position.
• Step 1: “42” (no characters read because there is no leading whitespace)
• Step 2: “42” (no characters read because there is neither a ‘-’ nor ‘+’)
• Step 3: “42” (“42” is read in)
Example 2
• Input: s = ” -042”
• Output: -42
1
Explanation:
• Step 1: “-042” (leading whitespace is read and ignored)
• Step 2: “-042” (‘-’ is read, so the result should be negative)
• Step 3: “-042” (“042” is read in, leading zeros ignored in the result)