@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))

Leetcode题库——8.字符串转为整数【##】的更多相关文章

  1. LeetCode题库13. 罗马数字转整数(c++实现)

    问题描述: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II  ...

  2. Leetcode题库——13.罗马数字转整数

    @author: ZZQ @software: PyCharm @file: Luoma2Int.py @time: 2018/9/16 17:06 要求: 罗马数字转数字 字符 数值 I 1 V 5 ...

  3. [LeetCode] String to Integer (atoi) 字符串转为整数

    Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...

  4. leetcode刷题笔记08 字符串转整数 (atoi)

    题目描述 实现 atoi,将字符串转为整数. 在找到第一个非空字符之前,需要移除掉字符串中的空格字符.如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即 ...

  5. [LeetCode] 8. String to Integer (atoi) 字符串转为整数

    Implement atoi which converts a string to an integer. The function first discards as many whitespace ...

  6. leetcode题库

    leetcode题库 #题名题解通过率难度出现频率  1 两数之和     46.5%简单2 两数相加     35.5%中等3 无重复字符的最长子串     31.1%中等4 寻找两个有序数组的中位 ...

  7. Leetcode(8)字符串转换整数

    Leetcode(8)字符串转换整数 [题目表述]: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我 ...

  8. MySQL 将 字符串 转为 整数

    MySQL 将 字符串 转为 整数 1.CAST(epr AS type) 1)type 为 SIGNED " AS SIGNED); 效果如下: 2)type 为 UNSIGNED &qu ...

  9. Leetcode(8)-字符串转整数

    实现 atoi,将字符串转为整数. 在找到第一个非空字符之前,需要移除掉字符串中的空格字符.如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值 ...

随机推荐

  1. CoreText 关键性常用函数说明

    CoreText是专门进行文字绘制的函数集合 CoreText 将单个字符分为 · baseline(基线),一条假想的线,一行上的字形都以此线作为上下位置的参考,在这条线的左侧存在一个点叫做基线的原 ...

  2. jQuery插件,判断鼠标的移入移出方向

    今天用jQuery封装了一个简单的插件,判断鼠标的移入移出方向,以后的项目中可能还会遇到这样一个简单的效果,就记录下来吧! 先看结构和样式: <!DOCTYPE html> <htm ...

  3. Web安全0001 - MySQL SQL注入 - 如何寻找注入点

    注:本文是学习网易Web安全进阶课的笔记,特此声明. 其他数据库也可以参考寻找注入点. A: 一.信息搜集(百度) 1.无特定目标 inurl:.php?id= 2.有特定目标 inurl:.php? ...

  4. daily Tip

    daily tip :   <UserControl.Resources>         <Storyboard x:Name="sb1" x:Key=&quo ...

  5. SpringCloud-微服务的注册与发现Eureka(二)

    一.SpringCloud简介 Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载均 ...

  6. 数据结构与算法 —— 链表linked list(06)

    回文链表 链接 请检查一个链表是否为回文链表. 进阶:你能在 O(n) 的时间和 O(1) 的额外空间中做到吗? 解题思路: 回文链表的特点就是对称. 把链表放到栈中去,利用栈的先进后出的规则,和原链 ...

  7. 简单可行的code review规则

    前言 曾经有一段垃圾代码放在我的面前,我没有拒绝,等我真正开始接手的时候我才后悔莫及,程序员最痛苦的事莫过于此! 每当接手别人的代码,都有一种想重新写一遍的感觉,等到别人再来接手你的代码时,同样的感觉 ...

  8. SpringBoot之MongoTemplate的查询可以怎么耍

    学习一个新的数据库,一般怎么下手呢?基本的CURD没跑了,当可以熟练的增.删.改.查一个数据库时,可以说对这个数据库算是入门了,如果需要更进一步的话,就需要了解下数据库的特性,比如索引.事物.锁.分布 ...

  9. 我所理解的selenium之PO设计模式

    下午,花了点时间来整理UI自动化设计,就把我所理解的PO设计模式项目结构脑图整理如下,有不对的地方还望多多包涵.谢谢

  10. PHP的学习路线规划

    第一阶段:WEB的快速入门 前期入门学习我们需要学一些HTML+CSS+JS前端的一些技术,这个阶段不需要太深入的学习,学习到可以制作出一个像样点的静态页面就可以了.因为大家是学习PHP,对于新人来说 ...