← All questions
Coding
String to Integer (atoi)
Asked at
BitGo
1Give yourself 5 minutes
2Answer out loud, not in your head
3Then compare with the answer below
The problem
Implement the function myAtoi(s) which converts the given string s to a 32-bit signed integer (similar to the C/C++ atoi function).
Steps to Implement:
- First,** ignore** any leading **whitespace **characters ' ' until the first non-whitespace character is found.
- Check the next character to determine the sign. If it’s a '-', the number should be negative. If it’s a '+', the number should be positive. If neither is found, **assume **the number is positive.
- Read the digits and convert them into a number. Stop reading once a** non-digit characte**r is encountered or the end of the string is reached. **Leading zeros **should be **ignored **during conversion.
- The result should be **clamped **within the 32-bit signed integer range: [-2147483648, 2147483647]. If the computed number is outside this range, return -2147483648 if the number is less than -2147483648, or return 2147483647 if the number is greater than 2147483647.
- Finally, return the computed number after applying all the above steps.
**Input: **s = " -12345" Output: -12345 Explanation:
- Ignore leading whitespaces.
- The sign '-' is encountered, indicating the number is negative.
- Digits 12345 are read and converted to -12345.
Input: s = "4193 with words" Output: 4193 Explanation:
- Read the digits 4193 and stop when encountering the first non-digit character (w).
Input: s = " +004500abc"
- 0 ≤ s.length ≤ 200
- s consists of English letters (both lowercase and uppercase), Digits '0' to '9', Characters: ' ', '+', '-', and '.'
cpp
class Solution {
public:
int myAtoi(string input) {
// Your code goes here
}
};java
class Solution {
public int myAtoi(String input) {
// Your code goes here
}
}python
class Solution:
def myAtoi(self, input):
# Your code goes herejavascript
class Solution {
myAtoi(input) {
// Your code goes here
}
}csharp
public class Solution
{
public int MyAtoi(string input)
{
// Your code goes here
}
}go
func myAtoi(input string) int {
// Your code goes here
}Stuck? Show a way to structure it+
- 01Skip leading spaces.
- 02Read an optional sign.
- 03Accumulate consecutive digits only.
- 04Check overflow before multiply and add.
- 05Clamp to signed 32-bit bounds and return.
Reference answer
Then expect these follow-ups
How would you support arbitrary integer bases?
Tests: follow-up reasoning
Why is checking after multiplication unsafe?
Tests: correctness reasoning
Free to read · better with Enzo
Practice this out loud with Enzo
Enzo runs it as a mock interview, pushes back with follow-ups, and grades you on the rubric.
Next question