美文网首页
LeetCode 08 String to Integer (a

LeetCode 08 String to Integer (a

作者: SiyueLin | 来源:发表于2016-04-16 19:59 被阅读43次

    题目要求

    Implement atoi to convert a string to an integer.Hint: Carefully consider all possible input cases.
      题目翻译:实现atoi函数,功能是把String转成Int。仔细考虑各种可能的输入情况。

    题目分析

    要点一是正负号的判断;要点二是数值超过Integer的数值范围,停止转换,输出Integer对应的最大值或最小值。
      字符转数字需要用到ASCII运算:char-'0'得到数值。

    package com.linsiyue;
    
    public class Solution {
        public static int myAtoi(String str) {
            if (str == null || str.length() == 0)
                return 0;
            str = str.trim();
            char firstChar = str.charAt(0);
            int sign = 1, start = 0, len = str.length();
            long sum = 0;
            if (firstChar == '+') {
                sign = 1;
                start++;
            } else if (firstChar == '-'){
                sign = -1;
                start++;
            }
            for (int i = start; i < len; i++) {
                if (!Character.isDigit(str.charAt(i)))
                    return (int) sum*sign;
                // 常用的操作:字符转数字: ASCII运算
                sum = sum*10 + str.charAt(i)-'0';
                if (sign == 1 && sum > Integer.MAX_VALUE)
                    return Integer.MAX_VALUE;
                if (sign == -1 && sign*sum < Integer.MIN_VALUE)
                    return Integer.MIN_VALUE;
            }
            return (int)sum*sign;
        }
    }
    

    相关文章

      网友评论

          本文标题:LeetCode 08 String to Integer (a

          本文链接:https://www.haomeiwen.com/subject/bhholttx.html