思路:模拟,排除边界情况
Python:
class Solution: def strToInt(self, str: str) -> int: if not str or (len(str)==1 and (str[0]<'0' or str[0]>'9')): return 0 str=str.strip() count=len(str) digit_flag=False for i in range(len(str)): if str[i]=='-' or str[i]=='+': if not digit_flag: continue else: count=i break elif (str[i]>='0' and str[i]<='9'): digit_flag=True continue else: count=i break try: if str[0] == '-': if str[1]>'9' or str[1]<'0': return 0 try: tmp_int=int(str[1:count]) res=0-tmp_int except: tmp_int=int(str[1:]) res=0-tmp_int elif str[0]=='+': if str[1]>'9' or str[1]<'0': return 0 try: res=int(str[1:count]) except: res=int(str[1:]) elif str[0]>='0' and str[0]<='9': try: tmp_int=int(str[:count]) res=tmp_int except: tmp_int=int(float(str)) res=tmp_int else: return 0 except: return 0 if res>2**31-1: return 2**31-1 elif res<(-2)**31: return (-2)**31 else: return res