8. String to Integer[M]字符串转整数
题目
Inplement atoi which converts a string to an integer.
The function first discards as many whitespace characters as necessary until the first non-whitespace character is found. Then, starting from this character, takes an optional initial plus or minus sign followed by as many numerical digits as possible, and interprets them as a numerical value.
The string can contain additional characters after those that form the integral number, which are ignored and have no effect on the behavior of this function.
If the first sequence of non-whitespace characters in str is not a valid integral number, or if no such sequence exists because either str is empty or it contains only whitespace characters, no conversion is performed.
If no valid conversion could be performed, a zero value is returned.
Note:
- Only the space character ' ' is considered as whitespace character.
- Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [ \(−2^{31}, 2^{31} − 1\) ]. If the numerical value is out of the range of representable values, INT_MAX ( \(2^{31} − 1\) ) or INT_MIN ( \(−2^{31}\) ) is returned.
思路
思路1
问题的关键在于必须满足各种条件:
- 开头的空格
- 正负号的处理
- 溢出判断
- 数字的处理
思路2:正则表达式(Python)
- str.strip(rm) 删除str字符中开头和结尾处,位于rm序列的字符
- str.lstrip(rm) 删除str字符中开头处,位于rm序列的字符
- str.rstrip(rm) 删除str字符中结尾处,位于rm序列的字符
- 利用try-except块来检查异常输入
- 正则表达式,re模块
\d 表示[0,9]的数字,\d+ 表示不止一个数字
^ 表示匹配字符串的开头
-?表示匹配前一个字符或子表达式0次或1次重复
re.search 扫描整个字符串并返回第一个成功的匹配,匹配成功返回一个匹配的对象,否则返回None
group() 分组就是用()括起来的正则表达式,匹配出的内容表示一个分组。group()输出一个包含这个组所对应的元组。
cpp
class Solution {
public:
int myAtoi(string str) {
int p=0;
while(str[p]==' '){
p++;
}
int sign=1;//判断正负
if(str[p]=='+'){
p++;
}
else if(str[p]=='-'){
sign=-1;
p++;
}
long resInt=0;
for(int i=p;i<str.size();i++){
if(str[i]< '0' || str[i]> '9'){
break;
}
int temp=str[i]-'0';//转化为数字
resInt = 10*resInt+temp;
if(sign==1){
if(resInt >= INT_MAX){
return INT_MAX;
}
}
else{
if(resInt-1 >= INT_MAX){
return INT_MIN;
}
}
}
resInt = sign*resInt;
return resInt;
}
};
Python
class Solution(object):
def myAtoi(self, str):
"""
:type str: str
:rtype: int
"""
str = str.strip()
try:
res = int(re.search('(^[\+\-]?\d+)', str).group())
except:
res = 0
return min(max(-2147483648, res), 2147483647)
8. String to Integer[M]字符串转整数的更多相关文章
- [LeetCode] String to Integer (atoi) 字符串转为整数
Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...
- [leetcode]8. String to Integer (atoi)字符串转整数
Implement atoi which converts a string to an integer. The function first discards as many whitespace ...
- [LeetCode] 8. String to Integer (atoi) 字符串转为整数
Implement atoi which converts a string to an integer. The function first discards as many whitespace ...
- 【LeetCode】8. String to Integer (atoi) 字符串转换整数
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:字符串转整数,atoi,题解,Leetcode, 力扣,P ...
- Leetcode8.String to Integer (atoi)字符串转整数(atoi)
实现 atoi,将字符串转为整数. 该函数首先根据需要丢弃任意多的空格字符,直到找到第一个非空格字符为止.如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字 ...
- 【LeetCode】8. String to Integer (atoi) 字符串转整数
题目: Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input ca ...
- 【LeetCode】String to Integer (atoi)(字符串转换整数 (atoi))
这道题是LeetCode里的第8道题. 题目要求: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们 ...
- 008 String to Integer (atoi) 字符串转换为整数
详见:https://leetcode.com/problems/string-to-integer-atoi/description/ 实现语言:Java class Solution { publ ...
- Leetcode8--->String to Integer(实现字符串到整数的转换)
题目: 实现字符串到整数的转换 解题思路: 下面给出这道题应该注意的一些细节: 1. 字符串“ 123 ” = 123: 2. 字符串“+123” = 123: 3. 字符串“-12 ...
随机推荐
- 前端学习笔记-HTML(一)
- lz的第一个RN项目
这是lz 成功在原有项目上集成的第一个ReactNative 项目. 参考官方网址: http://reactnative.cn/docs/0.43/integration-with-existing ...
- FLP不可能原理
1. FLP impossibility背景 FLP Impossibility(FLP不可能性)是分布式领域中一个非常著名的结果,该结果在专业领域被称为“定理”,其地位之高可见一斑.该定理的论文是由 ...
- PostgreSQL 满足条件时插入数据
例如:当表中不存在某记录时,才插入这条记录. INSERT INTO 表名(列名1, 列名2) SELECT '值1', '值2' WHERE NOT EXISTS ( SELECT * FROM 表 ...
- 全栈框架——MEAN
MEAN: MongoDB - Express - AngularJs - Node.js MongoDB 是一个面向文档的. NoSQL 类型的数据库.MongoDB 颠覆了传统的基于表的数据存储方 ...
- (转)RabbitMQ学习之spring整合发送同步消息
http://blog.csdn.net/zhu_tianwei/article/details/40890543 以下实现使用Exchange类型为DirectExchange. routingke ...
- VC++6.0进行数字图像处理的步骤以及遇到的问题
1) 2) 3) 添加CDIB类时,如果没有你要选的那个类,可以先随便选个基类继承,然后自己在代码里把基类修改成要继承的,把一些消息映射的注释掉就可以了,这样的话在建立类向导里也可以找到新建的类. / ...
- 从U盘安装CentOS7.3教程(转载)
0.准备工作: 一台没系统的普通电脑u盘一个(大于1G,最小安装的话不超过1G,根据选择系统大小匹配U盘即可) CentOS7.3 iso文件一个UltraISO工具 1.制作U盘 ①使用UltraI ...
- 解决linux 升级高版本python3.7后yum不能使用的问题
我们linux系统一般自带python2.7 版本,但是最近项目需求必须要上python3以上,对于用惯了python2的我来说,只能硬着头皮上了.下面是我的解决办法 which yum => ...
- with as递归调用
一.递归调用--在代码中偶尔看到以记之,便于下次学习 https://blog.csdn.net/johnf_nash/article/details/78681060 --查询节点及其下所有子节点 ...