请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。

函数 myAtoi(string s) 的算法如下:

  • 读入字符串并丢弃无用的前导空格
  • 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。
  • 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。
  • 将前面步骤读入的这些数字转换为整数(即,“123” -> 123, “0032” -> 32)。如果没有读入数字,则整数为 0 。必要时更改符号(从步骤 2 开始)。
  • 如果整数数超过 32 位有符号整数范围 [−2312^{31}231, 231−12^{31} -1231−1 ] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −2312^{31}231 的整数应该被固定为 −2312^{31}231 ,大于 231−12^{31}-1231−1 的整数应该被固定为 231−12^{31}-1231−1 。
  • 返回整数作为最终结果。

注意:
本题中的空白字符只包括空格字符 ’ ’ 。
除前导空格或数字后的其余字符串外,请勿忽略 任何其他字符。

示例1

输入:s = “42”
输出:42
解释:加粗的字符串为已经读入的字符,插入符号是当前读取的字符。
第 1 步:“42”(当前没有读入字符,因为没有前导空格)
第 2 步:“42”(当前没有读入字符,因为这里不存在 ‘-’ 或者 ‘+’)
第 3 步:“42”(读入 “42”)
解析得到整数 42 。
由于 “42” 在范围 [-2312^{31}231, 231−12^{31}-1231−1 ] 内,最终结果为 42 。

示例2

输入:s = " -42"
输出:-42
解释
第 1 步:" -42"(读入前导空格,但忽视掉)
第 2 步:" -42"(读入 ‘-’ 字符,所以结果应该是负数)
第 3 步:" -42"(读入 “42”)
解析得到整数 -42 。
由于 “-42” 在范围 [-2312^{31}231, 231−12^{31}-1231−1] 内,最终结果为 -42 。

示例3

输入:s = “4193 with words”
输出:4193
解释
第 1 步:“4193 with words”(当前没有读入字符,因为没有前导空格)
第 2 步:“4193 with words”(当前没有读入字符,因为这里不存在 ‘-’ 或者 ‘+’)
第 3 步:“4193 with words”(读入 “4193”;由于下一个字符不是一个数字,所以读入停止)
解析得到整数 4193 。
由于 “4193” 在范围 [-2312^{31}231, 231−12^{31}-1231−1 ] 内,最终结果为 4193 。

示例4

输入:s = “words and 987”
输出:0
解释
第 1 步:“words and 987”(当前没有读入字符,因为没有前导空格)
第 2 步:“words and 987”(当前没有读入字符,因为这里不存在 ‘-’ 或者 ‘+’)
第 3 步:“words and 987”(由于当前字符 ‘w’ 不是一个数字,所以读入停止)
解析得到整数 0 ,因为没有读入任何数字。
由于 0 在范围 [-2312^{31}231, 231−12^{31}-1231−1] 内,最终结果为 0 。

示例5

输入:s = “-91283472332”
输出:-2147483648
解释
第 1 步:"-91283472332"(当前没有读入字符,因为没有前导空格)
第 2 步:"-91283472332"(读入 ‘-’ 字符,所以结果应该是负数)
第 3 步:"-91283472332"(读入 “91283472332”)
解析得到整数 -91283472332 。
由于 -91283472332 小于范围 [-2312^{31}231, 231−12^{31}-1231−1] 的下界,最终结果被截断为 -2312^{31}231 = -2147483648 。

分析

偷会懒,直接用正则表达式来做。
从头开始匹配。空格零个或多个,可有可无;正负号,可有可无;然后数字,多个。

code

import reclass Solution:def myAtoi(self, str: str) -> int:max = 2 ** 31 - 1min = -2 ** 31numRe = re.compile(r'^[\s]*?[\+\-]?[0-9]+')   # Regular expressionnum = numRe.findall(str)  # Use the regular expression to matchnum = int(*num)  # Convert to integerif num < min:return minif num > max:return maxelse:return num

LeetCode8 字符串转整数相关推荐

  1. LeetCode8. 字符串转换整数 (atoi)

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

  2. 数据结构与算法:13 字符串与整数集合

    13 字符串与整数集合 知识点: 1. 字符串 我们古人没有电影电视,没有游戏网络,所以文人们就会想出一些文字游戏来娱乐.比如宋代的李禺写了这样一首诗:"枯眼望遥山隔水,往来曾见几心知?壶空 ...

  3. C++实现字符串和整数之间的相互转换

    参考:http://www.cnblogs.com/GL-BBL/archive/2012/08/19/2646467.html http://www.cnblogs.com/bluestorm/p/ ...

  4. 【剑指offer-Java版】49把字符串转换为整数

    字符串转换为整数 : atoi 可能的输入: 1 带符号数 2 无符号数 3 零 4 空指针 5 超出表示范围 – 暂时仅仅是直接退出且设置最小 – 可以考虑此时抛个异常 6 非法输入,比如并不是一个 ...

  5. LeetCode 8 字符串转整数 (atoi)

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

  6. python 把带小数的浮点型字符串转换为整数的解决方案

    python 把带小数的浮点型字符串转换为整数的解决方案 参考文章: (1)python 把带小数的浮点型字符串转换为整数的解决方案 (2)https://www.cnblogs.com/mlgjb/ ...

  7. 整数转化成字符串; 字符串转换为整数

    整数转化成字符串: 字符串转换为整数 /*整数转化成字符串*/ char *IntToStr(int num, char str[]) {int i = 0, j = 0;char temp[100] ...

  8. php把时间变成整数,php怎么将字符串转为整数

    php将字符串转为整数的方法:可以利用intval()函数来实现.intval()函数通过使用指定的进制base转换,返回变量的integer数值.intval()函数不能用于object,否则会产生 ...

  9. 【TypeScript】parseInt 函数将字符串转换为整数

    parseInt 函数 字符串转换为整数 parseInt() 函数解析一个字符串返回一个整数. 下面是一个示例: const a = parseInt("007"); 上述函数将 ...

  10. LeetCode 08字符串转整数09回文数

    维护公众号:bigsai ,点赞再看,养成习惯! 08字符串转整数 题目描述: 分析: 本题主要是字符串的处理.需要注意以下几点: 去除字符前的空字符 第一个有效字符必须是符号或者数字 只能有一个符号 ...

最新文章

  1. 第六十期:玩了分布式这么久,你不会连Kafka都不清楚吧
  2. [能力提升][费曼学习法]学习方法
  3. java调用nodejs程序,从java里面调用node.js脚本
  4. 怎样避免MYSQLD被OOM-KILLER杀死?
  5. window 显示本机信息的脚本 bat
  6. 基于分段解析法的单自由度反应谱程序
  7. Linux服务器使用网络代理
  8. 国家标准《电子计算机机房设计规范》(gb50174-93),中华人民共和国国家标准电子计算机机房设计规范GB50174-93.doc...
  9. 天才小毒妃 第878章 你喜欢孩子
  10. word流程图两条线的端点连接_word流程图连接线怎么画直
  11. 搞笑GIF动图怎么制作
  12. oracle IF_Oracle实时同步大数据平台解决方案
  13. MFC中ShowWindow函数
  14. 这四款Windows上的高质量软件,装机必备,使用起来极度舒适
  15. 获取某种颜色在图片中所占的比例
  16. Mobius Inversion
  17. android 系统/本地日志打印
  18. long long类型
  19. 计算机图形学——直线光栅化
  20. 【程序人生】程序员成长历程的四个阶段

热门文章

  1. Servlet-Session
  2. Android ListView下拉刷新点击加载更多
  3. 系统中了莫名奇怪的毒,杀毒软件不起作用了,怎么办
  4. 自适应平台AUTOSAR(Adaptive Platform AUTOSAR)平台设计(6)——通信管理
  5. 大规模图搜索和实时计算在阿里反作弊系统中的应用
  6. 第二季-专题11-世界一下变大了-MMU
  7. ​使用 QuickBI 搭建酷炫可视化分析
  8. Ping++中的AlipaySDK和AlicloudUTDID冲突解决方案
  9. Linux环境下如何编译C++程序
  10. UVALive5910 UVA1641 POJ4022 ASCII Area【趣味程序+输入输出】