剑指offer第二版(Python3)--面试题67 : 把字符串转换成整数

第2章 面试需要的基础知识

第3章 高质量的代码

第4章 解决面试题的思路

第5章 优化时间和空间效率

第6章 面试中的各项能力

  面试题62 : 圆圈中最后剩下的数字

  面试题64 : 求1+2+3+…+n

  面试题65 : 不用加减乘除做加法

  面试题67 : 把字符串转换成整数

第7章 两个面试案例


题目描述
牛客网
  将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

  ps:不用考虑科学计数法,也不用考虑小数

解题思路
  简单考虑下正负号以及开头为0的情况即可。

实战

class Solution:
    def StrToInt(self, s):
        # write code here
        if not s:
            return 0
        res = 0
        numbers = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
        negative = False
        if s[0] == '0':
            return 0
        if s[0] == '+':
            s = s[1:]
        elif s[0] == '-':
            negative = True
            s = s[1:]
        if not s:
            return 0
            
        for i, word in enumerate(s[::-1]):
            if word not in numbers:
                return 0
            res += (ord(word) - 48) * 10 ** i  # 字符“0”对应的ASCII码为48
        if negative:
            res = -res
        if res >= 2147483648 or res <= -2147483649:
            return 0
        return res

你可能感兴趣的:(算法设计,剑指offer,把字符串转换成整数,Python3)