LeetCode 08 String to Integer (atoi)

题目要求

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 (atoi))