JAVA-字符串转数字(使用字符ASCII的十进制值进行处理)

将字符串转化为整数

http://www.nowcoder.com/questionTerminal/44d8c152c38f43a1b10e168018dcc13f

这个题挺有意思的,同时也有很多坑,注意题目是返回一个整数,而非长整数,所以用int足矣。
躺坑经验:(解题思路使用字符的ascii值进行数值的区间判断以及正负判断)
1.去除两端空白字符
2.去掉空白字符后,截断非0~9数字
3.判断首个字符是否为"+,-"符号

public int atoi (String str) {

        byte[] bytes = str.trim().getBytes();

        int value = 0;//返回值

        //正负字符byte值
        byte p = '+';
        byte n = '-';

        //0-9数字区间byte值
        byte zero = '0';
        byte nine = '9';

        if(bytes.length == 0) return value;

        //过滤掉非无用字符,并只用endIndex作为截断位
        int endIndex = 1;
        for (int i = 1; i < bytes.length; i++) {

            //判断是否为0~9数字
            if(bytes[i] < zero||bytes[i] > nine) {
                endIndex = i;
                break;
            }
            endIndex = i + 1;
        }

        //判断过滤后的值是否为空
        if(endIndex == 0) return value;

        for (int i = 0; i < endIndex; i++) {

            //如果第一个字符是正负符号,continue不做计算
            if(i == 0 && (bytes[i] == p || bytes[i] ==n)) continue;

            if(bytes[0] == n){//如果是正值-=
                value -= (bytes[i] % zero) * Math.pow(10, endIndex - 1 - i);
            }else{//否则+=
                value += (bytes[i] % zero) * Math.pow(10, endIndex - 1 - i);
            }

        }

        return value;

    }
全部评论
"117e40091539" 不符合
点赞 回复 分享
发布于 2021-04-04 23:04

相关推荐

10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务