LeetCode8 字符串转整数
请你来实现一个 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 字符串转整数相关推荐
- LeetCode8. 字符串转换整数 (atoi)
LeetCode8. 字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们 ...
- 数据结构与算法:13 字符串与整数集合
13 字符串与整数集合 知识点: 1. 字符串 我们古人没有电影电视,没有游戏网络,所以文人们就会想出一些文字游戏来娱乐.比如宋代的李禺写了这样一首诗:"枯眼望遥山隔水,往来曾见几心知?壶空 ...
- C++实现字符串和整数之间的相互转换
参考:http://www.cnblogs.com/GL-BBL/archive/2012/08/19/2646467.html http://www.cnblogs.com/bluestorm/p/ ...
- 【剑指offer-Java版】49把字符串转换为整数
字符串转换为整数 : atoi 可能的输入: 1 带符号数 2 无符号数 3 零 4 空指针 5 超出表示范围 – 暂时仅仅是直接退出且设置最小 – 可以考虑此时抛个异常 6 非法输入,比如并不是一个 ...
- LeetCode 8 字符串转整数 (atoi)
实现 atoi,将字符串转为整数. 在找到第一个非空字符之前,需要移除掉字符串中的空格字符.如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值 ...
- python 把带小数的浮点型字符串转换为整数的解决方案
python 把带小数的浮点型字符串转换为整数的解决方案 参考文章: (1)python 把带小数的浮点型字符串转换为整数的解决方案 (2)https://www.cnblogs.com/mlgjb/ ...
- 整数转化成字符串; 字符串转换为整数
整数转化成字符串: 字符串转换为整数 /*整数转化成字符串*/ char *IntToStr(int num, char str[]) {int i = 0, j = 0;char temp[100] ...
- php把时间变成整数,php怎么将字符串转为整数
php将字符串转为整数的方法:可以利用intval()函数来实现.intval()函数通过使用指定的进制base转换,返回变量的integer数值.intval()函数不能用于object,否则会产生 ...
- 【TypeScript】parseInt 函数将字符串转换为整数
parseInt 函数 字符串转换为整数 parseInt() 函数解析一个字符串返回一个整数. 下面是一个示例: const a = parseInt("007"); 上述函数将 ...
- LeetCode 08字符串转整数09回文数
维护公众号:bigsai ,点赞再看,养成习惯! 08字符串转整数 题目描述: 分析: 本题主要是字符串的处理.需要注意以下几点: 去除字符前的空字符 第一个有效字符必须是符号或者数字 只能有一个符号 ...
最新文章
- 第六十期:玩了分布式这么久,你不会连Kafka都不清楚吧
- [能力提升][费曼学习法]学习方法
- java调用nodejs程序,从java里面调用node.js脚本
- 怎样避免MYSQLD被OOM-KILLER杀死?
- window 显示本机信息的脚本 bat
- 基于分段解析法的单自由度反应谱程序
- Linux服务器使用网络代理
- 国家标准《电子计算机机房设计规范》(gb50174-93),中华人民共和国国家标准电子计算机机房设计规范GB50174-93.doc...
- 天才小毒妃 第878章 你喜欢孩子
- word流程图两条线的端点连接_word流程图连接线怎么画直
- 搞笑GIF动图怎么制作
- oracle IF_Oracle实时同步大数据平台解决方案
- MFC中ShowWindow函数
- 这四款Windows上的高质量软件,装机必备,使用起来极度舒适
- 获取某种颜色在图片中所占的比例
- Mobius Inversion
- android 系统/本地日志打印
- long long类型
- 计算机图形学——直线光栅化
- 【程序人生】程序员成长历程的四个阶段
热门文章
- Servlet-Session
- Android ListView下拉刷新点击加载更多
- 系统中了莫名奇怪的毒,杀毒软件不起作用了,怎么办
- 自适应平台AUTOSAR(Adaptive Platform AUTOSAR)平台设计(6)——通信管理
- 大规模图搜索和实时计算在阿里反作弊系统中的应用
- 第二季-专题11-世界一下变大了-MMU
- ​使用 QuickBI 搭建酷炫可视化分析
- Ping++中的AlipaySDK和AlicloudUTDID冲突解决方案
- Linux环境下如何编译C++程序
- UVALive5910 UVA1641 POJ4022 ASCII Area【趣味程序+输入输出】