剑指offer49:字符串转化为整数
来源:互联网 发布:房源群发软件 编辑:程序博客网 时间:2024/05/29 16:28
字符串转化为整数:各种陷阱
题目简介
题目本身不难,但需要考虑的非法输入比较多,所以还是值得学习一下,用来应付各种比较“严格的”面试。
int StrToInt(const char* str);
考虑因素:
1. str指针是否为空,str是否为空串
2. 正负号输入
3. 整数溢出
(若还有其他考虑,还请赐教。)
编写代码
bool g_invalid_input_49 = false;int q49_StrToInt(const char* str) { if (nullptr == str || '\0' == *str) { g_invalid_input_49 = true; return 0; } bool is_positive = true; const char *p = str; if ('+' == *p) { ++p; } else if ('-' == *p){ is_positive = false; ++p; } return q49_StrToInt_Core(p, is_positive);}int q49_StrToInt_Core(const char* p, bool is_positive) { int ret = 0; while ('\0' != *p) { if (*p >= '0' && *p <= '9') { ret = ret * 10 + *p - '0'; //判断是否溢出:分别判断上溢和下溢 if ((is_positive && ret > 0x7FFFFFFF) || (!is_positive && ret < (signed int)0x80000000)) { g_invalid_input_49 = true; ret = 0; break; } ++p; } else { g_invalid_input_49 = true; ret = 0; break; } } if (!is_positive) { ret = -ret; } return ret;}
总结
如果简单些转换可能大家都会,但真正能这样写出来,说实在的,确实不容易。准确的说,现在的我,面试的时候肯定做不到。只有多积累了。
0 0
- 剑指offer49:字符串转化为整数
- 剑指Offer49把字符串转化成整数
- 整数转化为字符串
- 字符串转化为整数
- 字符串转化为整数
- 字符串转化为整数
- 整数转化为字符串
- 字符串转化为整数
- 字符串转化为整数
- 字符串转化为整数
- 整数转化为整数字符串
- 整数转化为字符串和字符串转化为整数
- 整数转化为字符串函数
- 一个字符串转化为整数
- 将字符串转化为整数
- 将整数转化为字符串
- 字符串转化为整数值
- 【剑指Offer】面试题49:把字符串转化为整数
- 2. Add Two Numbers
- web应用程序 两层c/s、三层c/s、b/s架构对比及Servlet由来
- 独立主机配置FTP,解析域名经历
- 64位Linux下的栈溢出
- mongodb Failed: error connecting to db server: no reachable servers
- 剑指offer49:字符串转化为整数
- <%@ INCLUDE FILE=""%>与<JSP:INCLUDE PAGE=""/>区别
- 2015届华为校园招聘机试题-本人菜鸟,尝试解答-工具Eclipse
- iOS CocoaPods安装和使用图解
- 给定位置-系统导航
- C++ 定义静态数据成员
- linux下压缩相关命令
- App开发者必备的运营、原型、UI设计工具整理
- 测试问题的文章