美文网首页
面试题67:把字符串转换成整数

面试题67:把字符串转换成整数

作者: 潘雪雯 | 来源:发表于2020-05-09 15:00 被阅读0次

    题目

    写一个函数StrToInt,实现把字符串转换成整数的功能。
    要求不能使用atoi或其他类似的库函数。

    解题思路

    1)考虑特殊情况:空指针、空字符串、正负号、溢出等
    边界:-231~231-1,边界情况可以引入c++中极值的头文件limit.h
    有专门的int型的最大值INT_MAX和最小值INT_MIN

    1. 考虑非0~9之间的字符,返回0

    代码

    
    class Solution{
      public:
        int strToint(string str)
        {
            long long  result = 0;
            int sign = 0;
            //1,字符串为空
            if(str.size() == 0)
            {
                return result;
            }
            //判断首字母是否为‘+’或'-'
            if(str[0] == '+')
            {
                sign = 1;
            }
            else if(str[0] == '-')
            {
                sign = -1;
            }
            int digit = 1;
            for(int i = str.size()-1;i>0;i--)
            {
                if(str[i]>='0' && str[i]<='9')
                {
                    result = result + (str[i] - '0')* digit;
                    digit  = digit * 10;
                }
                else // 除0~9之外的非法输入
                {
                    return 0;
                }
            }
            if(str[0] == '+' || str[0] == '-')
            {
                result = sign * result;
            }
            else
            {
                result = result + (str[0] - '0')*digit;
            }
            if(result > INT_MAX || result < INT_MIN)
            {
                result = 0;
            }
            return result;
    
        }
    };
    

    完整代码见Github

    相关文章

      网友评论

          本文标题:面试题67:把字符串转换成整数

          本文链接:https://www.haomeiwen.com/subject/ralknhtx.html