zoukankan      html  css  js  c++  java
  • Leetcode题库——8.字符串转为整数【##】


    @author: ZZQ
    @software: PyCharm
    @file: myAtoi.py
    @time: 2018/9/20 20:54
    要求:实现 atoi,将字符串转为整数。

    1)根据需要丢弃任意多的空格字符,直到找到第一个非空格字符为止
    2)如果第一个非空字符是正号或负号,选取该符号;
    3) 将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。
    4) 如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。
    5) 字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响。
    6) 当字符串中的第一个非空字符序列不是个有效的整数;或字符串为空;或字符串仅包含空白字符时,则不进行转换。
    7) 若函数不能执行有效的转换,返回 0。
    

    说明:
    假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1]。
    如果数值超过可表示的范围,则返回 INT_MAX (2^31 − 1) 或 INT_MIN (−2^31) 。

    class Solution():
        def __init__(self):
            pass
    
        def myAtoi(self, str):
                """
                :type str: str
                :rtype: int
                """
                # 导入正则模块
                import re
                # 字符串中查找全部符合条件的整数,返回的是列表,第一个参数是正则,第二个参数是字符串
                # strip()字符串去空格
                ret = re.findall(r"^[-+]?d+", str.strip())
                # 判断是否有匹配的值,没有的话返回0,例如"word values 987",匹配不到,返回0
                if ret:
                    ret_str = ret[0]  # 匹配的数字的字符串
                    ret_str2 = ""  # 记录去符号的字符串,ret_str后面还要使用,所以定义一个新的变量记录
                    # 判断是否带有符号 + or -
                    if ret_str[0] == "-" or ret_str[0] == "+":
                        ret_str2 = ret_str[1:]
                    else:
                        ret_str2 = ret_str
                    # str转int
                    ret_int = int(ret_str2)
                    # 判断第一个字符是否为负号
                    if ret_str[0] == "-":
                        # 三目运算符,判断是否溢出
                        # 如果ret_int <= 2**31则返回-ret_int,否则返回-2**31
                        return -ret_int if ret_int <= 2**31 else -2**31
                    else:
                        return ret_int if ret_int < 2**31 else 2**31-1
                else:
                    return 0
    
    if __name__ == "__main__":
        answer = Solution()
        str = "   -42"
        print(answer.myAtoi(str=str))
    
    
  • 相关阅读:
    RF学习笔记
    解决pycharm下git命令使用时中文显示乱码
    Django2.2 学习笔记1-概念篇
    cookie、session、token的理解
    win10下安装与使用mysql
    Redis学习笔记
    MongoDB与pymongo学习笔记
    记:打开Charles后,win10 chrome访问https的网站提示“您的链接不是私密链接”的解决过程
    charles抓包教程
    jmeter遍历时间戳
  • 原文地址:https://www.cnblogs.com/zzq-123456/p/9721283.html
Copyright © 2011-2022 走看看