LC8 took all of my time today. Pseudocoding here for reference later –
Problem Statement
Convert a string to integer -
- Leading whitespaces to be ignored
+
or-
to be taken into account for the integer sign- Non-digit characters to be ignored
- Digit characters to be converted to integers
- Constraint specifies a string length of 0 to 200, integer overflow is possible; answer in that case to be rounded off to the max/min integer value
- Return the final signed integer
Pseudocode
index = 0
answer = 0
sign = 1
if string length = 0, return 0
while (index < string.length AND leading whitespaces) {
increment index
}
if (index < string.length AND current character + or -) {
sign = 1 if '+'
OR
sign = -1 if '-'
increment index
}
while (index < string.length) {
digit = (int) current character ----- [- '0' in Java (some ASCII math)]
if digit does not lie between 0 and 9, break loop
check for integer overflow
- MAX_INT / 10 > answer OR
- MAX_INT / 10 == answer then last digit of MAX_INT to be less than current digit
if integer overflow - return MAX or MIN int (check with sign)
else add digit to answer
}
return answer