题目描述:
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
解题方案:
这里需要考虑几个边界条件:
数据上下 溢出
空字符串
只有正负号
有无正负号
错误标志输出
其中采用位运算符来判断是否溢出。
# -*- coding:utf-8 -*-
class Solution:
def StrToInt(self, s):
# write code here
if not s:
return 0
flag = 1
num = 0
if s[0] == '-':
flag = -1
if len(s) == 1:
return 0
s = s[1:]
elif s[0] == '+':
if len(s) == 1:
return 0
s = s[1:]
for i in s:
if i <= '0' or i > '9':
return 0
num = num*10 + ord(i) - 48
if (flag > 0 and num > 0x7FFFFFFF) or ( flag < 0 and num > 0x80000000):
return 0
return num*flag