题解 | #把字符串转换成整数(atoi)#
把字符串转换成整数(atoi)
https://www.nowcoder.com/practice/d11471c3bf2d40f38b66bb12785df47f
public int StrToInt (String s) { //判断空 if(s.length()==0) return 0; int index=0;//记录下标的一个指针 //去掉前导空格 for (int i = 0; i < s.length(); i++) { if(s.charAt(i)==' '){ index++;//后移 }else{ break; } } System.out.println("index:"+index); //越过前导空格后什么也没有了 if(index == s.length()) return 0; //判断正负号 int flag=1; if(s.charAt(index)=='-'){ flag=-1;//变负数 index++; }else if(s.charAt(index)=='+'){//变正数 index++; } long res=0;//存最终结果的 for (int i = index; i < s.length(); i++) { if(s.charAt(i)>='0' && s.charAt(i)<='9'){ res= res*10 + (s.charAt(i)-'0'); //System.out.println("res="+res); // 半路已经溢出了,所以要半路处理,放在循环中 //处理越界的数,分正负数,如果把以下代码放在循环外 //则正数的直接会溢出变成负数,数据就错了 if(flag>0 && res>Integer.MAX_VALUE){ return Integer.MAX_VALUE; } if(flag<0 && res*(-1)<Integer.MIN_VALUE){ return Integer.MIN_VALUE; } }else{ break; } } return (int)(flag*res) ; }