将字符串转换成数字
2015-10-04 14:34
225 查看
问题叙述性说明:
Implement atoi to convert a string to an integer.
解决问题的思路:
对于一个字符串,需要注意以下几点:
1、所有的空气过滤器在字符串的开头格字符;
2、注意数字字符前面的“+”和“-”字符。从而确定数字的正负号;
3、仅仅处理数字字符,一旦出现非数字字符。马上停止字符串处理,并返回已处理的结果;
4、返回结果时要注意数字越界的问题。不能大于最大值,不能小于最小值。
Implement atoi to convert a string to an integer.
解决问题的思路:
对于一个字符串,需要注意以下几点:
1、所有的空气过滤器在字符串的开头格字符;
2、注意数字字符前面的“+”和“-”字符。从而确定数字的正负号;
3、仅仅处理数字字符,一旦出现非数字字符。马上停止字符串处理,并返回已处理的结果;
4、返回结果时要注意数字越界的问题。不能大于最大值,不能小于最小值。
class Solution { public: int atoi(const char *str) { if (str == NULL) return 0; const char *pCur = str; long long result = 0; int flag = 0;/*表示该数是否为负值*/ while (*pCur == ' ' && *pCur != '\0') pCur++; if (*pCur == '\0') /*字符串中仅仅有空格*/ return 0; if (*pCur == '+')/*处理字符串前面的符号*/ pCur++; else if (*pCur == '-') { flag = 1; pCur++; } if (*pCur > '9' || *pCur < '0')/*加减号后面为非法字符,跳出处理*/ return 0; if (*pCur != '\0') result = _atoi_core(pCur, flag); return (int)result; } long long _atoi_core(const char * pCur, int flag) { long long result; while (*pCur != '\0') { if (*pCur >= '0' && *pCur <= '9') { result = result*10 + *pCur - 48; pCur++; } else /*遇到非法字符,跳出处理*/ break; } if (result > 0x7FFFFFFF) { if (flag) return INT_MIN; else return INT_MAX; } if (flag) result = 0 - result; return result; } };
相关文章推荐
- android 图片文字轮播效果(图片和文字自动滚动)
- YARN源码分析(八)-----Reduce Shuffle过程分析
- 图文 dede 添加 头部 尾部 js调用
- java 内部类
- 106. Construct Binary Tree from Inorder and Postorder Traversal (Tree; DFS)
- BZOJ 2037: [Sdoi2008]Sue的小球(DP)
- 第二十七篇:QQ好友列表,UITableViewHeaderFooterView用法
- hdu 5091 Beam Cannon(扫描线段树)
- Codeforces 32E Hide-and-Seek 乞讨2关于镜面反射点 计算几何
- 从Unity引擎过度到Unreal4引擎
- 杭电acm1061
- 登录失败:禁用的当前账户——window共享的傻X问题
- linux 惊群问题 http://blog.csdn.net/liujiyong7/article/details/43346829
- tomcat的配置
- 上传图片问题
- vsftp关于权限的条目配置
- 【兼容】浏览器兼容那些事
- 单词数
- The Stern-Brocot Number System(排序二进制)
- [codevs1380]没有上司的舞会