首先去除掉首位空格,此时第一个字符有三种情况

  1. 首先是-或者+,此时往前进一位,当后面没有字符或者后面字符不是数字时,返回0。将后面的数字字符累加起来。累加过程中需要与Integer.MAX_VALUE或者Integer.MIN_VALUE比较;
  2. 后面字符是数字,将后面字符累加起来。累加过程中与Integer.MAX_VALUE比较。由于有可能爆int,所以用long存储累加结果;
  3. 其余情况,全部返回0。
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return int整型
     */
    public int StrToInt (String s) {
        // write code here
        s = s.trim();
        if(s.length() == 0) {
            return 0;
        }
        int i = 0;
        if(s.charAt(i) == '-' || s.charAt(i) == '+') {
            boolean flag = false;
            if(s.charAt(i) == '-') {
                flag = true;
            }
            i++;
            if(i == s.length()) {
                return 0;
            }
            if(s.charAt(i) >= '0' && s.charAt(i) <= '9') {
                long sum = 0;
                int j = i;
                while(j < s.length() && s.charAt(j) >= '0' && s.charAt(j) <= '9') {
                    sum = sum * 10 + (s.charAt(j) - '0');
                    if(flag) {
                        long x = -1 * sum;
                        if(x < Integer.MIN_VALUE) {
                            return Integer.MIN_VALUE;
                        }
                    } else {
                        if(sum > Integer.MAX_VALUE) {
                            return Integer.MAX_VALUE;
                        }
                    }
                    j++;
                }
                return flag ? -1 * (int)sum : (int)sum;
            }
        } else if(s.charAt(i) >= '0' && s.charAt(i) <= '9') {
            long sum = 0;
            int j = i;
            while(j < s.length() && s.charAt(j) >= '0' && s.charAt(j) <= '9') {
                sum = sum * 10 + (s.charAt(j) - '0');
                if(sum > Integer.MAX_VALUE) {
                    return Integer.MAX_VALUE;
                }
                j++;
            }
            return (int)sum;
        }
        return 0;
    }
}