classSolution(object): defmyAtoi(self, st): """ :type str: str :rtype: int >>> s = Solution() >>> s.myAtoi("42") 42 >>> s.myAtoi(" -42") -42 >>> s.myAtoi("4193 with words") 4193 >>> s.myAtoi("words and 987") 0 >>> s.myAtoi("-91283472332") -2147483648 >>> s.myAtoi(" -12-45") -12 >>> s.myAtoi("-") 0 >>> s.myAtoi("- 1") 0 >>> s.myAtoi("- 1") 0 >>> s.myAtoi("- -1") 0 >>> s.myAtoi("+1") 1 >>> s.myAtoi("123 456") 123 """ INT_MAX = 2**31 - 1 INT_MIN = -2**31 start, end = -1, -1 if st == "": return0 for idx, i in enumerate(st): if i == " ": if start != -1: end = idx break elif i in set({"-", "+"}): if start == -1: start = idx else: end = idx break
elif i in set({"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}): if start == -1: start = idx else: if start == -1: return0 else: end = idx break try: if end == -1: value = int(st[start:]) else: value = int(st[start:end]) except ValueError: return0 if value > INT_MAX: return INT_MAX if value < INT_MIN: return INT_MIN return value
defmyAtoi2(self, st): """ :type str: str :rtype: int """ import re st = st.strip() try: res = re.search('(^[\+\-]?\d+)', st).group() res = int(res) res = res if res <= 2147483647else2147483647 res = res if res >= -2147483648else-2147483648 except: res = 0 return res