leetcode的每日一题更新( String to Integ

2017-09-27  本文已影响0人  今天是晴天

题目简单的不行,就是将字符串转换成int类型的数字,但是弄了一个小时才弄出来,太多的边界情况,比如空串和null值不用说,前后有空格,超出int类型最大和最小范围就返回最大或最小,最前面有+-号怎么处理,字符串中如果有字符,从第一个字符开始算,前面不是字母的变成数字,遇到字母停止,如果第一个为字母直接返回0。附上代码:

public int myAtoi(String str) {
        if(str==null || str.trim().equals(""))return 0;
        str=str.trim();
        boolean fu=false;
        if(str.charAt(0)=='+' && str.length()>1){
            str=str.substring(1, str.length());
        }else{
            if(str.charAt(0)=='-'&& str.length()>1) {
            str=str.substring(1, str.length());
            fu=true;
            }
        }
        String result="";
        for(int i=0;i<str.length();i++) {
            if(!(str.charAt(i)>47 && str.charAt(i)<58)) {
                if(i==0)return 0;
                break;
            }
            result+=str.charAt(i);
        }
        if(fu) {
            if(result.length()>10 || -Long.parseLong(result)<=Integer.MIN_VALUE) {
                return Integer.MIN_VALUE;
            }else {
                return -Integer.parseInt(result);
            }
        }else {
            if(result.length()>10 || Long.parseLong(result)>=Integer.MAX_VALUE) {
                return Integer.MAX_VALUE;
            }else {
                return Integer.parseInt(result);
            }
        }
    }
上一篇下一篇

猜你喜欢

热点阅读