解答
                
                思路:
核心思路比较简单:
从字符串的左边往右逐一计算,前面的数a*10+ 当前位的值b
那考查点在哪?
考察细节:
1. 字符串为空;
2. 首字符为’+’ , ‘-’ ;
3. 字符串为’+’ , ‘-’;
4. 字符串开始为’ ’;
5. 数字转换过程中,超过int最大值;
6. 注意字符’9’ 不等于数字9 ,需要’9’ – ‘0’;
核心代码
int  parseInt( const char[] str)
{
      if(str.length ==0 )//错误情况
             return 0; (throw exception)
       //考虑空格
       int i = 0;
      while( str[i] == ‘  ‘ )
                  ++i;
      //判断正负
      int sign = 1;
      if(str[i] == ‘-’)
      {
                sign = -1;
                ++ i;
       }else if( str[i] ==  ‘+’)
      {
               ++i;
      } 
long num = 0; //注意为long
     while( i  <  str.length)
     {
            if( str[i] >= ‘0’ && str[9] <= ‘9’)
            {
                   num = num * 10 +  (*str – ‘0’);
                   if (num > 0x7FFFFFFF)                   {
                          throw exception;
                   }
                   ++i;
            }else
            {
                  throw exception;
            }          
      }
      return num * sign;
}
            
                
                    
这是我一直没记住的一个重点
跟着大佬输出,感觉能量满满
代码assica码
public class ParseInt {
public static int string2Int(String s){
assert(s.length() >11) ;
long num = 0;
int flag= 1;
char[] ch = s.toCharArray();
for (int i = 0; i < s.length(); i++) {
// 符号检查
if(ch[i] == '-'){
flag = -1;
}else {
if(ch[i]!='+')
num = num*10+(ch[i]-'0');
}
}
num = flag * num;
return (int) num;
}