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

    这题难就难在不知道要考虑那些情况,也没个实例

    参考:https://www.cnblogs.com/springfor/p/3896499.html有四个条件需要考虑:

    自己参考上面四个条件写出了自己的代码,结果老是错。例如:“+-2”,结果应该是0

    参考实现https://www.cnblogs.com/rustfisher/p/5204159.html

     /*
         * 8. String to Integer (atoi)
         * Implement atoi to convert a string to an integer.
         * 2016-2-20
         */
        public static int myAtoi(String str) {
            if (str == null || str.length() < 1) {
                return 0;
            }
            str = str.trim();   // kill add white spaces
            int i = 0;          // index of str
            char flag = '+';    // default positive
            if (str.charAt(0) == '-') {
                flag = '-';
                i++;
            } else if (str.charAt(0) == '+') {
                i++;
            }
            double res = 0;
            // abandon the non-digit char; calculate the result
            while (str.length() > i && str.charAt(i) >= '0' && str.charAt(i) <= '9') {
                res = res * 10 + str.charAt(i) - '0';
                i++;
            }
            if (flag == '-') res = -1 * res;
            if (res > Integer.MAX_VALUE) {
                return Integer.MAX_VALUE;
            } else if (res < Integer.MIN_VALUE) {
                return Integer.MIN_VALUE;
            }
            return (int) res;
        }

    自己的代码:

    class Solution {
         public static int myAtoi(String str) {
                if(str ==null ||str.length()<1){
                    return 0;
                }
                str = str.trim();
                char flag = '+';
                int j=0;
                if(str.charAt(0)=='-'){
                    flag = '-';
                    j++;
                }else if(str.charAt(0)=='+'){
                    flag = '+';
                    j++;
                }
                double result = 0;
                for (int i = j; i < str.length()&&str.charAt(i) >= '0' && str.charAt(i) <= '9'; i++) {
                        result = result*10 + str.charAt(i)-'0';
            
                }
                if (flag == '-') result = -1 * result;
                if (result > Integer.MAX_VALUE) {
                    return Integer.MAX_VALUE;
                } else if (result < Integer.MIN_VALUE) {
                    return Integer.MIN_VALUE;
                }
                return (int) result;
            }
    }
  • 相关阅读:
    网络状态码含义——(比如204,304, 404, 504,502)
    Vue两个简易代替vuex的方法(eventBus,observable)
    单页面首屏加载慢解决方案
    前端监控和前端埋点
    ES5 和 ES6的继承
    mysql 隔离级别
    mysql 事务
    Seata
    Sentinel Dashboard 部署
    java 垃圾回器
  • 原文地址:https://www.cnblogs.com/Michael2397/p/8072551.html
Copyright © 2011-2022 走看看