[LeetCode]String to Integer (atoi)
2015-06-18 19:35
267 查看
题意:字符串转正数
原题来自:https://leetcode.com/problems/string-to-integer-atoi/
分析:
《程序员面试宝典》上出现的面试题,主要是考虑到细节。
1. 字串为空或者全是空格,返回0;
2. 字串的前缀空格需要忽略掉;
3. 忽略掉前缀空格后,遇到的第一个字符,如果是‘+’或‘-’号,继续往后读;如果是数字,则开始处理数字;如果不是前面的2种,返回0;
4. 处理数字的过程中,如果之后的字符非数字,就停止转换,返回当前值;
5. 在上述处理过程中,如果转换出的值超出了int型的范围,就返回int的最大值或最小值。
原题来自:https://leetcode.com/problems/string-to-integer-atoi/
分析:
《程序员面试宝典》上出现的面试题,主要是考虑到细节。
1. 字串为空或者全是空格,返回0;
2. 字串的前缀空格需要忽略掉;
3. 忽略掉前缀空格后,遇到的第一个字符,如果是‘+’或‘-’号,继续往后读;如果是数字,则开始处理数字;如果不是前面的2种,返回0;
4. 处理数字的过程中,如果之后的字符非数字,就停止转换,返回当前值;
5. 在上述处理过程中,如果转换出的值超出了int型的范围,就返回int的最大值或最小值。
class Solution { public: int myAtoi(string str) { long long cur=0;// int num=0,i=0; int flag1=0,flag2=0; while(str[i]!='\0' && str[i]==' ') i++;//开头空格舍弃 if(str[i]=='-') flag1++,i++; else if(str[i]=='+') flag2++,i++; for(; str[i]!='\0'; i++) { if(str[i]>='0' && str[i]<='9') { if(flag1==2) { cur=cur*10-(str[i]-'0');//这里是减法,因为cur符号是负号了 if(cur<-2147483648) return -2147483648; } else if(flag1==1) cur=-str[i]+'0',flag1++;//将负数的符号记录到cur里 else { cur=cur*10+(str[i]-'0'); if(cur>2147483647) return 2147483647; } } else break; } num=(int)cur; return num; } };
作者:orange1438 出处:http://www.cnblogs.com/orange1438/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
相关文章推荐
- Ibatis
- subprocess使用方法
- 赫夫曼编码实现
- 黑马day05 jsp语法相关知识
- C语言实现for循环输出图案
- How to put an object on the request in a servlet
- 绑定当前对象例子——Tag="{Binding}"
- POJ 2976
- C语言指针总结
- 计算最大公因数
- How to forward from a Java servlet to a JSP
- 周末了,也给心灵放放假
- htmt 5 素材
- Android系统中Parcelable和Serializable的区别
- 大文件,5亿整数,怎么排?
- ClearCase中lost+found目录介绍
- 关于Spring的AOP面向切面编程
- git commit –a时使用vim编辑提交信息
- Android getWindow().setFlags(。。。。。。)
- Android 框架练成 教你打造高效的图片加载框架