leetcode之String to Integer (atoi)

‘’是c/c++语言中的字符串结束符,在ASCII字符集中对应数字0。

java中不是。

另外字符相减是ASSIC码相减

0的ASSIC码是49

这道题是剑指offer上的第49题,模拟了整个面试的过程。一定要注意代码的鲁棒性,边界条件以及空,或者特殊值

下面附上AC代码,用java实现和书上的略不同,不过思想是一致的:

public int myAtoi(String str) {
        if(str == null){
            return 0;
        }
        str = str.trim();
        if(str.length()==0){
            return 0;
        }
        int sign = 1;
        int index = 0;
        if(str.charAt(index)=='+'){
            index++;
        }else if(str.charAt(index)=='-'){
            sign = -1;
            index++;
        }
        long num = 0;
        for(;index<str.length();index++){
            if(str.charAt(index)<'0'||str.charAt(index)>'9')
                break;
            num = num*10 + (str.charAt(index)-'0');
            if (num > Integer.MAX_VALUE ) {
                break;
            }
        }
           if (num * sign >= Integer.MAX_VALUE) {
            return Integer.MAX_VALUE;
        }
            if (num * sign <= Integer.MIN_VALUE) {
            return Integer.MIN_VALUE;
        }
        
        return (int)num * sign; 
        
    }

  

原文地址:https://www.cnblogs.com/gracyandjohn/p/4569905.html