Implement atoi to convert a string to an integer.

题目分析:

题目本身很简单就是将一个字符串转化成一个整数,但是由于字符串的千差万别,导致在实现的时候细节非常多。需要注意的有以下一些:
1.字符串可能由一些空格开始,然后遇到一个正号或者负号,然后是正常的数字
” +123” -> 123 ;” -41” -> -41
2.如果在数字后出现了一些其他字符,直接忽视
” +123^&34” -> 123 ; ” -41 123” -> -41
3.如果最前面的字符是无效数字,或者字符串只有空格或者是空的,都直接返回0
” &*^20” -> 0
4.如果正确的数字超出了int,如果是大于INT_MAX (2147483647),就返回2147483647;如果小于INT_MIN (-2147483648) ,就返回INT_MIN (-2147483648)
“2147483648” -> 2147483647

class Solution {
public:
int myAtoi(string str) {
long long sum=0;
int flag=0;//判断是否是第一个非空格字符
int fuhao=0;//如果等于1,表明是负数
int mine=-2147483648;//最小int
int maxe=2147483647;//最大int for(int i=0;i<str.size();i++)
{
//如果目前为止还没有出现第一个非空格字符
if(str[i]==32 && flag==0) continue; if((str[i]==43) || (str[i]==45)) {//43:+ 45:-
if(flag==0)//这里flag==0为真时表示遇到第一个非空格字符
{
flag=1;
if(str[i]==45)fuhao=1;
continue;
}
else return 0;//非第一个非空格字符位,又出现正负号,就是无效数字
} //如果数字后面又出先了非数字字符,就自动忽略后面的字符,返回已统计的数字
if(str[i]<48 || str[i]>57) {
if(fuhao==1) return -sum;
else return sum;
} sum=sum*10+str[i]-48;//如果该位字符是正常的数字,就将这个数字加入统计
flag=1;//即使第一个非空格字符不是符号,也要明确已经出现了非空格字符 if(fuhao==0){
if(sum>maxe) return maxe;
}
else{
if(-sum<mine) return mine;
} }
if(fuhao==1) return -sum;
return sum; }
};

8. String to Integer (atoi) ---Leetcode的更多相关文章

  1. String to Integer (atoi) leetcode

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

  2. String to Integer (atoi) ---- LeetCode 008

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

  3. String to Integer (atoi) leetcode java

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

  4. leetcode day6 -- String to Integer (atoi) &amp;&amp; Best Time to Buy and Sell Stock I II III

    1.  String to Integer (atoi) Implement atoi to convert a string to an integer. Hint: Carefully con ...

  5. Kotlin实现LeetCode算法题之String to Integer (atoi)

    题目String to Integer (atoi)(难度Medium) 大意是找出给定字串开头部分的整型数值,忽略开头的空格,注意符号,对超出Integer的数做取边界值处理. 方案1 class ...

  6. LeetCode: String to Integer (atoi) 解题报告

    String to Integer (atoi) Implement atoi to convert a string to an integer. Hint: Carefully consider ...

  7. Leetcode 8. String to Integer (atoi) atoi函数实现 (字符串)

    Leetcode 8. String to Integer (atoi) atoi函数实现 (字符串) 题目描述 实现atoi函数,将一个字符串转化为数字 测试样例 Input: "42&q ...

  8. LeetCode 8. 字符串转换整数 (atoi)(String to Integer (atoi))

    8. 字符串转换整数 (atoi) 8. String to Integer (atoi) 题目描述 LeetCode LeetCode8. String to Integer (atoi)中等 Ja ...

  9. 【leetcode】String to Integer (atoi)

    String to Integer (atoi) Implement atoi to convert a string to an integer. Hint: Carefully consider ...

随机推荐

  1. 关于Vue-ElementUI修改默认样式不成功问题解决

    Element是一个很好用的组件库,但是有时候我们需要修改一些组件的样式以满足我们自己的需求. 我们用浏览器调试找到相应的class,在本地重写这个class时,发现修改不成功. 这是因为在Vue文件 ...

  2. 学习笔记之Google

    Google Pro Tip: Use Back-of-the-envelope-calculations to Choose the Best Design - High Scalability - ...

  3. iOS UIView视图的图层控制

    1.添加视图 insertSubview:atIndex:   //放在子视图数组的具体索引位置 insertSubview:aboveSubview:   //某个子视图前面 insertSubvi ...

  4. flutter入门之常见的flutter问题汇总(转)

    1. 使用AppBar后如何去掉左边的返回箭头.左边的图标对应的是leading,源代码如下(吐槽一下,CSDN暂不支持dart语言): Widget leading = widget.leading ...

  5. 【坑】select2 模态框中下拉input无法focus

    select2的组件bug 解决方案: 在bootstrap.js中修改: Modal.prototype.enforceFocus = function () { $(document) .off( ...

  6. Haddop完全分布式集群搭建

    hadoop完全分布式搭建 建议(遇到的坑): 如果自己用的操作系统就是linux,我本身是deepin系统,装了两台虚拟机,结果,用户名没有配置,导致启动不了,因为hadoop的master节点启动 ...

  7. jade成段的文本和标签

    如果文本是大段的文本怎么写呢?因为文本会换行,比如有多行的文本,标签,文本傻傻分不清楚 p 1234567890 => <p>1234567890</p> 如果需要换行, ...

  8. java基础(1)----简介

    基础语法. 面向对象. 字符串和集合. IO流. 接口. lambda. 方法引用. Stream. 模块化. 一.java的前世今生: J2SE:标准体验版.J2EE:企业版.J2ME:小型版(移动 ...

  9. k8s的api

    一.namespaced resources 所谓的namespaced resources,就是这个resource是从属于某个namespace的, 比如pod, deployment, serv ...

  10. evpp 上传文件问题转

    背景 因为项目需求,需要使用360的evpp库,来实现一个接口,支持文件上传. 实际操作过程中,发现了一些问题,记录下来. 前端文件上传方式 简单的使用input标签 <body> < ...