import re
class Solution:
def myAtoi(self, str):
# 首先取出字符前面的空格
str2 = str
for index, item in enumerate(str):
if item == ' ':
str2 = str[index + 1:]
else:
# 直到第一次出现字符则停止
return str2
# 前面没有空格则原样返回
return str2
def take_sign(self, str):
str2 = str
for index, item in enumerate(str):
if item == '-' or item == '+':
str2 = str[index + 1:]
else:
return str2
return str2
def is_start_num(self, str):
num = ''
for index, item in enumerate(str):
if (re.compile('^[0-9]$').match(item)):
num += item
else:
return num
return num
s = Solution()
string = input()
string = s.myAtoi(string)
# print(string)
string = s.take_sign(string)
# print(string)
num = s.is_start_num(string)
# print(num)
# print(len(num))
if len(num) == 0:
print(0)
else:
print(int(num))
代码提交不上去后改写形式:
import re
def take_sign(str):
str2 = str
for index, item in enumerate(str):
if item == '-' or item == '+':
str2 = str[index + 1:]
else:
is_start_num(str2)
return
# return str2
is_start_num(str2)
def is_start_num(str):
num = ''
for index, item in enumerate(str):
if (re.compile('^[0-9]$').match(item)):
num += item
else:
return
# return num
# return num
if len(num) == 0:
print(0)
else:
print('aa')
print(int(num))
class Solution:
def myAtoi(self, str):
# 首先取出字符前面的空格
str2 = str
for index, item in enumerate(str):
if item == ' ':
str2 = str[index + 1:]
else:
# 直到第一次出现字符则停止
# return str2
take_sign(str2)
return
# 前面没有空格则原样返回
# return str2
take_sign(str2)
s = Solution()
# string = input()
string = s.myAtoi("42")
# string = s.take_sign(string)
# num = s.is_start_num(string)
# if len(num) == 0:
# print(0)
# else:
# print(int(num))
import re
is_minus_sign = False
def take_sign(str):
str2 = str
for index, item in enumerate(str):
if item == '-' or item == '+':
str2 = str[index+1:]
global is_minus_sign
is_minus_sign = True
else:
is_start_num(str2)
return
is_start_num(str2)
def is_start_num(str):
num = ''
for index, item in enumerate(str):
if (re.compile('^[0-9]$').match(item)):
num += item
else:
break
if len(num) == 0:
print(0)
# return 0
else:
if is_minus_sign:
if -int(num) < - 2**31:
print(-2**31)
else:
print(-int(num))
else:
if int(num) > 2**31-1:
print(2**31-1)
else:
print(int(num))
# return int(num)
class Solution:
def myAtoi(self, str):
str2 = str
for index, item in enumerate(str):
if item == ' ':
str2 = str[index + 1:]
else:
take_sign(str2)
return
take_sign(str2)
s = Solution()
s.myAtoi("-91283472332")
最后成功:
import re
# is_minus_sign = False
def take_sign(str):
is_minus_sign = False
str2 = str
for index, item in enumerate(str):
if item == '-' or item == '+':
# print(str)
str2 = str[index+1:]
str = str2
# global is_minus_sign
if item == '-':
is_minus_sign = True
# elif item == '+':
# str2 = str[index + 1:]
else:
val = is_start_num(str2, is_minus_sign)
return val
is_start_num(str2,is_minus_sign)
def is_start_num(str, flag):
num = ''
for index, item in enumerate(str):
if (re.compile('^[0-9]$').match(item)):
num += item
else:
break
if len(num) == 0:
# print(0)
return 0
else:
if flag:
is_minus_sign = False
if -int(num) < - 2**31:
return (-2**31)
# print(-2**31)
else:
return (-int(num))
# print(-int(num))
else:
if int(num) > 2**31-1:
return (2**31-1)
# print(2**31-1)
else:
return (int(num))
# print(int(num))
# return int(num)
class Solution:
def __init__(self):
self.is_minus_sign = False
def myAtoi(self, str):
if str == "" or str == '-' or str == '+':
return 0
str2 = str
for index, item in enumerate(str):
if item == ' ':
str2 = str[index + 1:]
else:
val = take_sign(str2)
return val
if index+1 >= len(str):
return 0
take_sign(str2)