《剑指offer》【把字符串转换成整数】(python版)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_20141867/article/details/81106246

题目描述:
将一个字符串转换成一个整数(实现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

猜你喜欢

转载自blog.csdn.net/qq_20141867/article/details/81106246