zoukankan      html  css  js  c++  java
  • 8. String to Integer (atoi)

    文章目录如下

    (1)自己的思路

    (2)自己的代码

    (3)别人的思路

    (4)别人的代码

    (5)对比自己的不足之处

    (1)自己的思路

     首先这道题的核心思想是数字与字符之间的转换,两个的联系便是ASCI码的关联。即如果字符x在'0'到'9'之间,那么x-'0'便是x对应的真是的数值。在具体构造返回数值方面,与上一篇思路差不多。

    (2)自己的代码

    class Solution {
    public:
        int myAtoi(string str) {
    
            //使用ascii码转换即可  48-57
    
            int tmp = 0;
    
            for (int i = 0; i<str.length(); i++)
            {
                if (str[i] >= '0'&&str[i] <= '9')
                {
                    tmp = tmp * 10 + (str[i] - '0');
                }
            }
    
            if (str[0] == '-')
                tmp = 0 - tmp;
            return tmp;
        }
    };

    (3)思路与我差不多,但是考虑到了空格,+,-号的问题

    (4)别人的代码

    class Solution {
    public:
        int myAtoi(string str) {
            int num = 0;
            int sign = 1;
            const int n = str.length();
            int i = 0;
    
            while (str[i] == ' ' && i < n) i++;
    
            if (str[i] == '+') {
                i++;
            }
            else if (str[i] == '-') {
                sign = -1;
                i++;
            }
    
            for (; i < n; i++) {
                if (str[i] < '0' || str[i] > '9')
                    break;
                if (num > INT_MAX / 10 ||
                    (num == INT_MAX / 10 &&
                        (str[i] - '0') > INT_MAX % 10))
                {
                    return sign == -1 ? INT_MIN : INT_MAX;
                }
    
                num = num * 10 + str[i] - '0';
            }
            return num * sign;
        }
    };

    (5)对比自己的不足之处

    其实关于别人的答案我也有着自己的质疑,例如"--2342"这种情况就不能处理,所以虽然我的代码有很多不足,但是如果把别人的代码当做答案我也觉得有些牵强,但是做题嘛,主要是锻炼思维,开心就好啦~

  • 相关阅读:
    [转]C#读写app.config中的数据
    [转]DirectoryEntry的应用
    js读取xml文档,并实现简单分页
    [转]写给想要做产品经理的同学
    《算法导论》(第二章)算法入门
    《算法导论》中伪代码的约定
    HDU ACM 1284 钱币兑换问题
    《算法导论》(第一部分)(第一章)
    HDU ACM 4554 叛逆的小明
    HDU ACM 1002 A + B Problem II
  • 原文地址:https://www.cnblogs.com/magicy/p/5343754.html
Copyright © 2011-2022 走看看