众所周知,Java的整型变量int只有32位,所能表示的

  • 最大为Integer.MAX_VALUE=2147483647=2^31-1,
  • 最小为Integer.MIN_VALUE=-2147483648=-2^31。

然而测试用例中有一个 -2147483649=Integer.MIN_VALUE-1。
要求返回类型依然是int,恕在下才疏学浅,这个测试用例我真是无能为力...
代码只能给您写成这样了。

public class Solution {
    public int StrToInt(String str) {
        if(str==null||str.length()==0) return 0;
        int i=0;
        int symbol=1;
        if(str.charAt(0)=='+') i++;
        else if (str.charAt(0)=='-') {i++; symbol=-symbol;}
        long ans=0;
        for(int j=i; j<str.length(); j++){
            char c=str.charAt(j);
            if(c<'0'||c>'9') return 0;
            ans=ans*10+c-'0';
        }
        return (int) (symbol*ans);
    }
}