NC100 字符串转换成整数

描述

写一个函数StrToInt,实现把字符串转换成整数的功能。

可能的情况:

1.空字符串

2.正负号

3.前导零

4.空格

5.非数字字符

6.溢出

示例1

输入:123 abc

返回值:123

示例2

输入:012a3

返回值:12

代码

public static int StrToInt(String str) {
        // 如果输入字符串为空或者只包含空格,则返回0
        if (str == null || str.trim().isEmpty()) {
            return 0;
        }

        int sign = 1; // 符号,1表示正数,-1表示负数
        int result = 0; // 存储转换后的整数结果
        boolean isNumber = false; // 标记是否至少有一个数字被转换

        // 去除字符串开头的空格
        str = str.trim();

        // 检查字符串的第一个字符是否是正负号
        if (str.charAt(0) == '+' || str.charAt(0) == '-') {
            sign = (str.charAt(0) == '-') ? -1 : 1; // 如果是'-'则设置符号为负,否则为正
            str = str.substring(1); // 移除第一个字符(正负号)
        }

        // 遍历字符串中的每个字符
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            // 如果当前字符不是数字,则停止转换
            if (c < '0' || c > '9') {
                break;
            }
            isNumber = true; // 标记至少有一个数字被转换
            int digit = c - '0'; // 将字符转换为对应的整数

            // 检查整数溢出,如果result乘以10后大于Integer.MAX_VALUE或者result等于Integer.MAX_VALUE/10且下一个数字大于7,则返回0
            if (result > Integer.MAX_VALUE / 10 || (result == Integer.MAX_VALUE / 10 && digit > Integer.MAX_VALUE % 10)) {
                return 0;
            }
            result = result * 10 + digit; // 将当前数字加到结果中
        }

        // 如果没有转换任何数字,则返回0
        if (!isNumber) {
            return 0;
        }

        // 返回转换后的整数,根据符号进行正负调整
        return sign * result;
    }

全部评论

相关推荐

如题,今年蔚来HC巨少,岗位,实习生都不够分的,感觉给校招的更少了
沙福林:我知道我没hc之后开始allin秋招,约会议室面试,带薪面试摸鱼😋
投递蔚来等公司10个岗位 > 实习中的菜狗时刻
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务