Leetcode初学——字符串转换整数(atoi)

题目

这道题其实并不难,唯一的难点大概就是他的说明:“我们的环境只有32位”,所以我们只能使用int型

稍微分析一下,字符串中的空格是好处理的,直接用String的trim()方法就可以去除,接着就是对“-”,“+”和非数字字符的判断,之后则是将字符串中的数字转换为int型

思路还是比较清晰的

直接贴上代码:

class Solution {
    public int myAtoi(String str) {
        int result = 0,i = 0, symbol = 1;
        str=str.trim();
        if(str.length()==0) return 0;
        if(str.charAt(i) == '-') {
            i++;
            symbol = -1;
        }else if(str.charAt(i) == '+') i++;
        while(i < str.length() && Character.isDigit(str.charAt(i))) {
            int r = str.charAt(i) - '0';
            if(result > Integer.MAX_VALUE / 10 || (result == Integer.MAX_VALUE / 10 && r > 7))  return symbol > 0 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
            result = result * 10 + r;
            i++;
        }
        return symbol > 0 ? result : -result;
    }
}

这段代码的精髓就在后面的几个判断中,由于较简单,我也就不再阐述,如果读者有疑惑,可以评论留言,我也都会一一回复的。

发布了25 篇原创文章 · 获赞 3 · 访问量 444

猜你喜欢

转载自blog.csdn.net/qq_39377543/article/details/104027821
今日推荐