题目:剑指offer 67题

需要考虑的情况:空指针、nullptr、空字符串""、正负号、数值溢出。在写代码的时候对这些特殊的输入都定义好合理的输出。
可以定义一个全局布尔型变量g_nStatus来判断是否是错误输入;可以定义一个minus布尔型变量来存储正负号的结果。

enum Status { kValid = , kInvalid };  // enum特性,默认kInvalid = 1
int g_nStatus = kValid; long long StrToIntCore(const char* digit, bool minus) {
long long num = ; // 64位整型
while (*digit != '\0') {
if (*digit >= '' && *digit <= '') {
int flag = minus ? - : ;
num = num * + flag * (*digit - ''); // 32位整数是否溢出,0x7FFFFFFF和0x80000000分别代表32位的最大正整数和最小负整数
if ((!minus && num > 0x7FFFFFFF) || (minus && num < (signed int)0x80000000)) {
num = ;
break;
}
digit++;
}
else {
num = ;
break;
}
}
if (*digit == '\0') {
g_nStatus = kValid;
}
return num;
} int StrToInt(const char* str) {
g_nStatus = kInvalid;
long long num = ;
if (str != nullptr && *str != '\0') {
bool minus = false;
if (*str == '+')
str++;
else if (*str == '-') {
str++;
minus = true;
} if (*str != '\0') {
num = StrToIntCore(str, minus);
}
}
}

总结:

在剑指offer中,明确提出,在写代码前考虑所有可能的测试用例,是非常好的一个编程习惯。在思考问题的过程中,把问题考虑得尽可能周到,代码尽量完整。如果让面试官指出你代码中存在的问题,此时印象分已经大打折扣,即使你反应再快,在他们眼里bug也是出现了。

剑指offer 67. 字符串转换为整数(Leetcode 8. String to Integer (atoi))的更多相关文章

  1. 【剑指offer】字符串转整数

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/28015693 题目描写叙述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函 ...

  2. 【剑指offer】字符串转换为数字,C++实现

    # 题目 把字符串转换成整数 # 思路 1.功能测试 正数/复数/0 2.边界值测试 最大的正整数/最小的负整数(数据上下溢出) 3.特殊输入测试 空字符串""的处理,返回0,设置 ...

  3. 剑指 Offer 67. 把字符串转换成整数 + 字符串

    剑指 Offer 67. 把字符串转换成整数 Offer_67 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author WaleGa ...

  4. 力扣 - 剑指 Offer 67. 把字符串转换成整数

    题目 剑指 Offer 67. 把字符串转换成整数 思路1 根据题意,要解决这题,首先要判断的条件有: 不包括首位空格 第一位必须为:+.-.数字三者其一,否则不合法 数字必须连续的,如果遇到非数字, ...

  5. 剑指 Offer 38. 字符串的排列 + 无重复元素的全排列

    剑指 Offer 38. 字符串的排列 Offer_38 题目描述 解题思路 可以使用递归实现全排列,每次都确定一个数的位置,当所有位置的数都确定后即表示一个排列. 但是考虑到本题需要排除重复的排列, ...

  6. 剑指 Offer 38. 字符串的排列

    剑指 Offer 38. 字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" ...

  7. 【剑指Offer】数值的整数次方 解题报告(Python)

    [剑指Offer]数值的整数次方 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews ...

  8. 【剑指Offer】字符串的排列 解题报告(Python)

    [剑指Offer]字符串的排列 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ...

  9. 《剑指offer》 数值的整数次方

    本题来自<剑指offer> 数值的整数次方 题目: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 思路: 代码从三个方面处 ...

随机推荐

  1. python_网络编程socket(TCP)

    服务端: import socket sk = socket.socket() #创建对象 sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) ...

  2. php文件更新后不生效?亲测有效!

    1,问题描述 一台windows Server2008 服务器上运行了iis7,其中存在php5.3和php5.5引擎的网页服务. 但实际使用中发现,修改php文件后,访问该文件的结果经常不能实时刷新 ...

  3. Greenplum实战之查询优化

    本文主要分为三部分: GP优化需要准备的一些关于优化之外的知识,包括清空缓存.性能监控.执行计划分析. 具体优化措施,从以下四个方面考虑: 表.字段 sql GP配置.服务器配置 硬件及节点资源 GP ...

  4. php 中秒杀

    控制器层 2 //秒杀 首先要判断库存 其次高并发 然后入库 3 public function goods_do() 4 { 5 $gid=input("get.gid"); 6 ...

  5. Pollard-Rho 总结

    将一个大数\(N\)分解质因子. 试除法,暴力枚举\(1-\sqrt{N}\)的数.时间复杂度:\(O(\sqrt{N})\). 通常,这个复杂度够了,但有时,\(N\leq10^{18}\). 这就 ...

  6. Linq to JSON/Json.NET

    Can I LINQ a JSON? http://stackoverflow.com/questions/18758361/can-i-linq-a-json Json.NET https://js ...

  7. 数据库学习之四--Join, Left Join, Right Join, Full Join对比

    一.Join, Left Join, Right Join, Full Join区别: 二.查询对比 1. 创建表Persons和Orders,并插入数据: CREATE TABLE `persons ...

  8. UVA 11754 Code Feat 中国剩余定理+枚举

    Code FeatUVA - 11754 题意:给出c个彼此互质的xi,对于每个xi,给出ki个yj,问前s个ans满足ans%xi的结果在yj中有出现过. 一看便是个中国剩余定理,但是同余方程组就有 ...

  9. 【poj2709】Painter--贪心

    Painter Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5621   Accepted: 3228 Descripti ...

  10. libimobiledevice

    #### 安装与卸载 ```bashideviceinstaller -i xxx.ipa # 安装ideviceinstaller -u [bundleID] # 卸载ideviceinstalle ...