Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution(object):
- def myAtoi(self, str):
- """
- :type str: str
- :rtype: int
- """
- str = str.strip()
- if not str:
- return 0
- max_int = (2**31)-1
- min_int = -2**31
- ops = ['+', '-']
- seen_number = False
- seen_op = False
- sign = 1
- base = 0
- for i in xrange(len(str)):
- e = str[i]
- if not e.isdigit() and e not in ops:
- if not seen_number:
- return 0
- else:
- # *important* use break instead of continue/return 0
- # to not include numbers after this char but keep those before
- break
- if e in ops:
- if seen_number or seen_op:
- # *important* use break instead of continue/return 0
- # to not include numbers after this char but keep those before
- break
- else:
- seen_op = True
- sign = 1 if e == '+' else -1
- if e.isdigit():
- # build up the number from the right side instead of left
- seen_number = True
- base *= 10
- base += int(e)
- if sign == 1 and base > max_int:
- return max_int
- elif sign == -1 and -base < min_int:
- return min_int
- return sign*base
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement