【从零单排之微软面试100题系列】20之把字符串转换成整数
来源:互联网 发布:淘宝排名怎么靠前 编辑:程序博客网 时间:2024/06/11 12:37
原题参见july大神博客系列【微软面试100题】
题目描述:输入一个表示整数的字符串,把该字符串转换成整数(int)并输出。
分析思路:(本题亦见于《剑指offer》面试题49)
核心部分的代码其实就是 num = num*10 + flag * (*str - '0');
但是本题还需要考虑到各种输入情况,比如正负号、空指针、空字符串以及溢出等方方面面。因此要尽量周到和完整
书中给出的参考代码如下:
enum Status { kValid = 0, kInvalid };int g_nStatus = kValid;//全局变量用以区分有效和无效输入//空指针、空字符串、含非数字字符串均为非法输入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 == '-'){minus = true;str++;}if(*str != '\0')num = StrToIntCore(str,minus);}return (int) num;}long long StrToIntCore(const char* str, bool minus){long long num = 0;int flag = minus ? -1:1;while(*str != '\0'){if(*str >= 0' && *str <= '9'){num = num * 10 + flag * (*str - '0');//判断溢出if( (!minus) && num > 0x7FFFFFF || (minus && num < (int) 0x80000000)){num = 0;break;}str++;}else{//输入含有非数字时,提前退出,并返回0,num = 0;break;}}//正常遍历到字符串末位,将全局变量置为kValid,说明输出的值是有效的if(*str == '\0')g_nStatus = kValid;return num;}
0 0
- 【从零单排之微软面试100题系列】20之把字符串转换成整数
- 【从零单排之微软面试100题系列】02之包含 min 函数的栈
- 【从零单排之微软面试100题系列】06之根据上排数写出下排数
- 【从零单排之微软面试100题系列】08之反转链表
- 【从零单排之微软面试100题系列】10之翻转单词顺序
- 【从零单排之微软面试100题系列】15之二叉树的镜像
- 【从零单排之微软面试100题系列】16之打印二叉树
- 【从零单排之微软面试100题系列】18之约瑟夫环问题
- 【从零单排之微软面试100题系列】19之Fibonacci数列
- 【从零单排之微软面试100题系列】01之二叉查找树与双向链表
- 【从零单排之微软面试100题系列】03之求子数组的最大和
- 【从零单排之微软面试100题系列】04之二叉树中和为某一值的路径
- 【从零单排之微软面试100题系列】05之查找最小的k个元素
- 【从零单排之微软面试100题系列】07之判断两个链表是否相交
- 【从零单排之微软面试100题系列】11之二叉树中结点的最大距离
- 【从零单排之微软面试100题系列】12之求1+2+3+…+n
- 【从零单排之微软面试100题系列】13之输出链表倒数第k个结点
- 【从零单排之微软面试100题系列】14之数组中和为s的两个数字
- Demo and Test Setup Guide - OFBiz Project Administration Workspac
- CODE[VS] 1099 字串变换
- java web项目运行出现java.lang.NoSuchFieldError: deferredExpression解决方法!
- 躺在夏威夷 用一百种方法挥霍时光
- 关于指针
- 【从零单排之微软面试100题系列】20之把字符串转换成整数
- Hadoop生态圈学习记录
- 程序员面试宝典一周目第二天
- POST&&&GET请求比较
- Java4Android-继承初步
- site:pv uv ip
- iOS-响应链机制
- 自定义UITableViewCell 上按钮点击事件处理
- Linux 制作和打补丁