版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
题目描述:
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
示例1
输入
+2147483647
1a33
输出
2147483647
0
思路:
本题其实没有什么思路难度,但是需要考虑周全。1、空串检验,2、数字合法性检验,3、正负数数字区分,4、只有一个正负号时
这里有一个小小的问题,对于非法字符串定义返回0,但是数字0也是返回0,无法区别,这里是因为在线编程只能按照要求返回一个值。如果是面试中,可以多定义一个变量标志非法还是结果为0。
class Solution:
def StrToInt(self, s):
bitweigh = 1
res = 0
if len(s) == 0:
return res
if len(s) == 1 and not s[0].isdigit():
return 0
for i in range(len(s) - 1, -1, -1):
if s[i].isdigit():
res += (ord(s[i]) - ord('0')) * bitweigh
bitweigh *= 10
continue
else:
if i == 0 and (s[i] is "+" or s[i] is "-"):
continue
else:
return 0
return -1 * res if s[0] is "-" else res