1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
""" https://leetcode.com/problems/string-to-integer-atoi/description/ """
class (object): def myAtoi(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 == "": return 0 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: return 0 else: end = idx break try: if end == -1: value = int(st[start:]) else: value = int(st[start:end]) except ValueError: return 0 if value > INT_MAX: return INT_MAX if value < INT_MIN: return INT_MIN return value
def myAtoi2(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 <= 2147483647 else 2147483647 res = res if res >= -2147483648 else -2147483648 except: res = 0 return res
|
近期评论