剑指Offer学习总结-把字符串转换成整数
2018-01-26 20:32
423 查看
剑指Offer学习总结-把字符串转换成整数
本系列为剑指Offer学习总结,主要是代码案例的分析和实现:书籍链接:http://product.dangdang.com/24242724.html
原作者博客:http://zhedahht.blog.163.com/blog/static/254111742011101624433132/
原作者博客链接有完整的项目代码下载。
把字符串转换成整数
题目
题目:把字符串转化为整数 ,若输入无效,则返回0且将标志位设为true。严谨分析的解法
这个题目本身的处理不难,但是我们需要考虑各种非法意外情况的处理。功能测试((输入的字符串表示正数、 负数和 0)。
边界值测试( 最大的正整数、 最小的负整数)
特殊输入测试( 输入字符串为 NULL 指针、 输入字符串为空字符串、 输入的字符串中有非数字字符等)
int StrToInt(const char* str) { g_nStatus = kInvalid; long long num = 0; if(str != NULL && *str != '\0') { bool minus = false; if(*str == '+') str ++; else if(*str == '-') { str ++; minus = true; } if(*str != '\0') { num = StrToIntCore(str, minus); } } return (int)num; } long long StrToIntCore(const char* digit, bool minus) { long long num = 0; while(*digit != '\0') { //是否在0-9的范围之内 if(*digit >= '0' && *digit <= '9') { int flag = minus ? -1 : 1;//是正还是负 num = num * 10 + flag * (*digit - '0'); //如果字符溢出 if((!minus && num > 0x7FFFFFFF) || (minus && num < (signed int)0x80000000)) { num = 0; break; } digit++; } else { num = 0; break; } } //如果走到了最后 说明是合法参数 if(*digit == '\0') { g_nStatus = kValid; } return num; }
相关文章推荐
- 【剑指Offer学习】【面试题49:把字符串转换成整数】
- 【剑指Offer学习】【面试题49:把字符串转换成整数】
- 【剑指offer】题目1508:把字符串转换成整数
- 剑指offer-把字符串转换为整数
- 剑指offer 50 把字符串转换成整数
- 剑指offer——面试题:把字符串转换为整数
- 剑指offer-----将一个字符串转换成对应的整数(模拟atoi)
- 剑指Offer 49 把字符串转换成整数
- 剑指Offer--049-把字符串转换成整数
- 剑指offer 49. 把字符串转换成整数
- [剑指offer][面试题49]把字符串转换成整数(待完善)
- 剑指offer(46)-把字符串转换成整数
- [剑指offer]把字符串转换成整数
- 【剑指offer-Java版】49把字符串转换为整数
- LintCode-剑指Offer-(54)转换字符串到整数
- 剑指offer——把字符串转换成整数
- 剑指Offer——把字符串转换成整数
- 剑指offer--字符串转换为整数
- 剑指offer 面试题49 把字符串转换成整数
- 【剑指offer】C语言:实现函数可以将一个字符串转换为对应的整数,如+1234输出1234