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让图片居中显示
<div align=center><img............></div>
- 关于中文期刊LaTeX的CCT相关
最近写完了大论文,回身看了一下CTeX的信息,看了下弄改进版套装的山大和清华的两位大神的博客,发现大神们倒腾过CCT. CCT的FTP还是一直可用的,ftp://ftp.cc.ac.cn/pub/cc ...
- sites for debugging script
1. javascript debugger online: http://jsfiddle.net/ 2. script(js,python,ruby) debugger online: http: ...
- RedHat/CentOS 大文件拆分及合并与md5验证
[root@tdh55 mnt]# cd /opt/[root@tdh55 opt]# ll -h-rw-r--r--. 1 root root 7.5G May 12 11:19 TDH-Image ...
- ML:自然语言处理NLP面试题
自然语言处理的三个里程碑: http://blog.csdn.net/sddamoke/article/details/1419973 两个事实分别为: 一.短语结构语法不能有效地描写自然语言. 二. ...
- 逐步理解Java中的线程安全问题
什么是Java的线程安全问题? 线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读/写完,其他线程才可使用.不会出现数据不一致或者数据 ...
- bootstrap modal 一闪
原因可能是因为bootstrap.min.js(bootstrap.js) 和modal.js重复引用导致的,而且重复引用还会引致bootstrap的js事件失效.
- apiCloud组件:swiper
一.apicloud中基于swiper封装了一个模块供调用.就是swiper.js 页面引入js就行 <script type="text/javascript" src=& ...
- Linux 内核链表 list.h 的使用
Linux 内核链表 list.h 的使用 C 语言本身并不自带集合(Collection)工具,当我们需要把结构体(struct)实例串联起来时,就需要在结构体内声明指向下一实例的指针,构成所谓的& ...
- jquery.lazyload滚动不起作用
昨天同事在开发图片懒加载功能时用到了lazyload,使用相当标准,然而结果却不如人意,在滚动时未能起作用.引用https://cdn.bootcss.com/jquery_lazyload/1.9. ...