美文网首页
面试题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