Leetcode String to Integer (atoi) problem solution YASH PAL, 31 July 2024 In this Leetcode String to Integer (atoi) problem solution we need to implement the myAtoi(string s) function that converts a string to a 32 bit signed integer. Problem solution in Python. class Solution: def validCharacter(self, ch): return ord('0') <= ord(ch) <= ord('9') def myAtoi(self, s: str) -> int: l = list(s) # remove whitespace while l and l[0] == " ": l.pop(0) # specify sign sign = 1 if l and l[0] == '+': l.pop(0) sign = 1 elif l and l[0] == '-': l.pop(0) sign = -1 buf = "" while l and self.validCharacter(l[0]): buf += l.pop(0) result = 0 for i in buf: num = ord(i) - ord('0') result = result* 10 + num result *= sign # add sign if result > 2 ** 31 - 1: return 2 ** 31 - 1 elif result < -(2 ** 31): return -(2 ** 31) else: return result Problem solution in Java. int start = 0, sign = 1; long res = 0; while(start < s.length() && s.charAt(start) == ' ') { start++; } if(start < s.length() && s.charAt(start) == '+') { start++; } else if(start < s.length() && s.charAt(start) == '-') { sign = -1; start++; } while(start < s.length()) { if(!Character.isDigit(s.charAt(start))) break; res *= 10; res += s.charAt(start) - '0'; if(res > Integer.MAX_VALUE) { if(sign == 1) return Integer.MAX_VALUE; return Integer.MIN_VALUE; } start++; } return (int) res * sign; Problem solution in C++. class Solution { public: int myAtoi(string str) { long long ans =0; bool isNeg = false; int i=0; while(str[i]==' ') i++; if(str[i]=='-'){ isNeg = true; i++; } else if(str[i]=='+'){ isNeg = false; i++; } while(str[i]=='0') i++; int end=0; for( end=i;end<str.size();end++){ if(str[end]>'9'||str[end]<'0') break; } if(end-i>12){ if(isNeg) return INT_MIN; else return INT_MAX; } for(int j=i;j<str.size();j++){ if(str[j]>'9'||str[j]<'0') break; ans = 10*ans + str[j]-'0'; } if(isNeg) return (INT_MIN>-ans?INT_MIN:-ans); else return (INT_MAX>ans?ans:INT_MAX); } }; Problem solution in C. int myAtoi(char *str) { int flag = 1; long res = 0; if (str == NULL) return 0; while (*str == ' ' || *str == 't') ++str; if (str == NULL) return 0; if (*str != '-' && *str != '+' && (*str < '0' || *str >'9')) return 0; if (*str == '-') {flag = -1;++str;} else if (*str == '+') {flag = 1; ++str;} if (str == NULL) return 0; int cnt = 0; while(*str) { if (*str < '0' || *str >'9') break; res = res * 10 + *str - 0x30; ++str; ++cnt; } if (cnt > 10) return flag == 1 ? INT_MAX : INT_MIN; res *= flag; if (res > INT_MAX) return INT_MAX; if (res < INT_MIN) return INT_MIN; return (int)res; } coding problems