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))
    
    
  • 相关阅读:
    unity3d 打包个人记录
    Unity3d 协程
    Unity3d 复制文字到剪切板及存储图像到相册
    为什么 redo log 具有 crash-safe 的能力,是 binlog 无法替代的?
    Java源码系列4——HashMap扩容时究竟对链表和红黑树做了什么?
    深入理解Java虚拟机1——内存区域
    Java源码系列3——LinkedHashMap
    深入理解Java虚拟机2——对象探秘
    高效学习
    WordPress自动代码高亮
  • 原文地址:https://www.cnblogs.com/zzq-123456/p/9721283.html
Copyright © 2011-2022 走看看