剑指offer 59. 把字符串转换成整数

  1. 题目:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
  2. 思路:
    1. 出现数字之后,就不能出现正负数了
  3. 启发或者坑:
    1. 如果数字超过int范围要处理
  4. 代码:
    class Solution {
    public:
        int StrToInt(string str) {
            //先判断str中+和-的index,如果有,一定必须是index0
            long long number = 0;
            bool positiveFlag = true;
            int startIndex = str.length();
            for (int i = 0 ;i < str.length(); i++) {
                if (str[i] == '+') {
                    //会不会出现++---8,这个数字实际上就是-8
                    if (i > startIndex)
                        return 0;
                }
                else if (str[i] == '-') {
                    //会不会出现++---8,这个数字实际上就是-8
                    if (i > startIndex)
                        return 0;
                    positiveFlag = !positiveFlag;
                }
                else if (str[i] >= '0' && str[i] <= '9') {
                    if (startIndex == str.length())
                        startIndex = i;
                    number = number*10 + (str[i]-'0');
                } else {
                    return 0;
                }
            }
            if (number > 2147483648)
                return 0;
            if (!positiveFlag)
                number = -number;
            //神奇的题目,超过int范围也不行
            if (number > 2147483647 || number < -2147483648)
                return 0;
            else
                return number;
        }
    };
发布了141 篇原创文章 · 获赞 5 · 访问量 7472

猜你喜欢

转载自blog.csdn.net/Alexia23/article/details/104094731