题目:剑指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. unittest简单使用的介绍

    无论是paython+request接口测试.ui自动化测试等,都常会用到unittest的框架,简单的介绍如下:

  2. idea java快速生成返回值

    ctrl+alt+V 或者

  3. 太白金星的考验----python while循环的执着

    我们知道 while循环的使用意味着 反复的执行一些操作,而且在while循环体中 从第一行代码执行到最后一行代码,(请您务必留心这句话!) 直到不再满足while后面给出的限定条件,才结束循环跳出到 ...

  4. 最小生成树&&次小生成树

    对于一个边上具有权值的图来说,其边权值和最小的生成树叫做图G的最小生成树 求无向图最小生成树主要有prim和kruskal两种算法 1.prim 将点集V分成Va和Vb两部分,Va为已经连入生成树的点 ...

  5. 【线性代数】6-6:相似矩阵(Similar Matrices)

    title: [线性代数]6-6:相似矩阵(Similar Matrices) categories: Mathematic Linear Algebra keywords: Similar Matr ...

  6. python输出的高亮显示

    一.语法 1.书写格式 开头部分: \033[显示方式;前景色;背景色m 结尾部分: \033[0m   例如:\033[31;1m测试的文字部分\033[0m   注意: 开头部分的三个参数:显示方 ...

  7. Linux进程通信之mmap

    mmap()函数: void *mmap(void* addr,size_t length,int port,int flags,int fd,off_t offset); 返回:成功:返回创建的映射 ...

  8. 一步一步配置AWS ELB Https证书

    第一步:生成CSR 要配置证书,我们首先需要创建一个CSR来向证书提供商申请证书.这个过程我们可以通过IIS中的工具来生成. 然后需要填写如下信息: 下一步后选择文件名后我们就可以创建出CSR 文件了 ...

  9. vue 图片上传

    功能说明: 1.调用手机拍照功能 2.调用相册功能 3.图片上传功能 4.图片预览功能 5.图片删除功能 关键点: .input 新增multiple .accept="image/*处理I ...

  10. QtCreator集成的MSVC套件有问题

    MSVC编译出来的内部签名算法的程序,相同的代码,验签结果和MINGW编译出来的不一样.MINGW编译出来的结果是正确的 怀疑是因为QtCreator集成的msvc有问题,可能是编码问题,可能是其他问 ...