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; }
};

最新文章

  1. Xshell5连接虚拟机出现连Could not connect to &#39;192.168.47.128&#39; (port 22): Connection failed,解决办法
  2. Word2013中制作按钮控件
  3. PC版淘宝UWP揭秘
  4. XAMPP里tomcat启动报错:Make sure you have Java JDK or JRE installed and the required ports are free
  5. 产品原型设计工具 Balsamiq Mockups(转)
  6. Android 4.2蓝牙介绍
  7. [转载]Log4net学习笔记
  8. N - Tram - poj1847(简单最短路)
  9. TCP连接状态
  10. Nginx搭建反向代理服务器
  11. Unity3D项目优化(转)
  12. BASIC-3 字母图形 循环 字符串
  13. 如何用cmd通过sublime打开文件?
  14. 2018-2019-2 网络对抗技术 20165328 Exp2 后门原理与实践
  15. Registrator中文文档
  16. [转] 微信小程序页面间通信的5种方式
  17. 外网访问内网SpringBoot
  18. hdu 2717 从n点走到k点 (BFS)
  19. Linksys E 刷Tomato shibby
  20. day 58 关于bootstrap

热门文章

  1. 【Mybatis】 入门
  2. Spark学习笔记3——RDD(下)
  3. Computer Vision_33_SIFT:A novel coarse-to-fine scheme for automatic image registration based on SIFT and mutual information——2014
  4. Android笔记(十五) Android中的基本组件——单选框和复选框
  5. Python面向对象之进阶
  6. 定制centos6.5自动安装ISO光盘
  7. [dev][ipsec][esp] ipsec链路中断的感知问题
  8. zabbix 3.2.2 server web展示如何显示中文 (三)
  9. C++11新特性之operator &quot;&quot; xxx(const char *, size_t n)
  10. Python基本的语法知识