剑指Offer-面试案例面试题66:把字符串转为整数

Posted flix

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指Offer-面试案例面试题66:把字符串转为整数相关的知识,希望对你有一定的参考价值。

题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

思路

首先判断该数字是整数还是负数,然后在转换的过程中判断字符串表示的数字是否溢出。题目的数字范围是有符号的int型整数,有符号的int型整数(4个字节)的范围为-2147483648 ~ +2147483647,也就是-0x80000000~0x7FFFFFFF。代码如下:

class Solution {
public:
    int StrToInt(string str) {
        if(str.empty())
            return 0;
        
        bool isNeg = false;    // 标记是否为负数
        bool index0IsNum = true;    //标记第一位是否为数字
        if(str[0]<‘0‘ || str[0]>‘9‘){
            if(str[0]==‘-‘)
                isNeg = true;
            index0IsNum = false;
        }
        
        int start = index0IsNum? 0:1; //起始的遍历位置
        long long num = 0;
        for(int i=start; i<str.length(); i++){
            if(str[i]>=‘0‘ && str[i]<=‘9‘){
                num = num*10 + str[i] - ‘0‘;
                if((!isNeg && num>0x7FFFFFFF) || (isNeg && num>0x80000000))
                    return 0;
            }
            else return 0;
        }
        
        if(isNeg)
            return -num;
        else return num;
    }
};

以上是关于剑指Offer-面试案例面试题66:把字符串转为整数的主要内容,如果未能解决你的问题,请参考以下文章

剑指Offer面试题46. 把数字翻译成字符串

剑指offer 面试38题

剑指Offer面试题67. 把字符串转换成整数

剑指Offer面试题67. 把字符串转换成整数

[剑指offer]面试题4:替换空格

剑指Offer面试题05-替换空格