8. String to Integer (atoi) ---Leetcode
2016-03-07 23:15
309 查看
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
题目分析:
题目本身很简单就是将一个字符串转化成一个整数,但是由于字符串的千差万别,导致在实现的时候细节非常多。需要注意的有以下一些: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; } };
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android java 与 javascript互访(相互调用)的方法例子
- 如何组织构建多文件 C 语言程序(二)
- android上改变listView的选中颜色
- String.intern
- 如何写好 C main 函数
- Prototype源码浅析 String部分(二)
- Ruby中的String对象学习笔记
- Lua和C语言的交互详解
- PostgreSQL ERROR: invalid escape string 解决办法
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- 使用C语言判断英文字符大小写的方法