码迷,mamicode.com
首页 > 其他好文 > 详细

力扣题解 8th 字符串转换整数 (atoi)

时间:2020-07-08 15:02:40      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:cte   block   ext   null   dig   dfa   positive   出现   ber   

8th 字符串转换整数 (atoi)

  • 字符串模式匹配

    这种题目极易写出臃肿的代码,我们需要明确具体的条件,并充分考虑细节。(否则会被样例虐爆)

    这里有一个常用的判断溢出条件的方法,在之前的题目中也有出现。

    • 对于正数:

      if(number > Integer.MAX_VALUE / 10 || (number == Integer.MAX_VALUE / 10 && next_index > 7)) return "溢出";

    • 对于负数:

      if(number < Integer.MIN_VALUE / 10 || (number == Integer.MIN_VALUE / 10 && next_index < -8)) return "溢出";

    class Solution {
        public int myAtoi(String str) {
            if(str == null || str.length() == 0) return 0;
            int point = 0;
            boolean isPositive = true;
            int ans = 0;
    
            while (point < str.length() && str.charAt(point) == ‘ ‘) {
                point++;
            }
    
            if (point < str.length() && str.charAt(point) == ‘+‘) {
                point++;
            } else if (point < str.length() && str.charAt(point) == ‘-‘) {
                isPositive = false;
                point++;
            }
    
            while (point < str.length() && Character.isDigit(str.charAt(point))) {
                if (ans > Integer.MAX_VALUE / 10 ||
                        (ans == Integer.MAX_VALUE / 10 && str.charAt(point) - ‘0‘ > 7)) {
                    return isPositive ? Integer.MAX_VALUE : Integer.MIN_VALUE;
                }
    
                ans = ans * 10 + str.charAt(point++) - ‘0‘;
            }
    
            return isPositive ? ans : -ans;
        }
    }
    
  • DFA有限状态机

力扣题解 8th 字符串转换整数 (atoi)

标签:cte   block   ext   null   dig   dfa   positive   出现   ber   

原文地址:https://www.cnblogs.com/fromneptune/p/13266743.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!