剑指49.字符串转整数

题目描述

将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。

主要体现在审题。

  • 字符串只允许出现正负号,数字。所以 入口要判断
  • 入口判空
  • 是否越界判断
  public static int StrToInt(String str) {
        //字符串是否为空
        //是否有非数字字符
        //是否+-开头
        //是否越界
        int flag = 1;
        long number = 0;//todo 如果用int  会都不到判断溢出逻辑就溢出了
        if (null == str || "".equals(str)) {
            return 0;
        }
        char[] chars = str.toCharArray();
        if (chars[0] == '-') {
            flag = -1;
        }
        for (int i = (chars[0] == '-' || chars[0] == '+') ? 1 : 0; i < chars.length; i++) {
            if (chars[i] > '9' || chars[i] < '0') {
                return 0;
            } else {
                number = number * 10 + chars[i] - '0';
            }
        }
        if ((flag == 1 && number > Integer.MAX_VALUE) || (flag == -1 && number < Integer.MIN_VALUE)) {
            return 0;
        }
        return (int) (flag * number);
    }
复制代码

转载于:https://juejin.im/post/5cf6336bf265da1b9570439f

猜你喜欢

转载自blog.csdn.net/weixin_34195364/article/details/91450386