(4)数字与溢出的处理。具体看代码
代码如下:
public static int myAtoi(String str) { int sign=1,base=0,index=0,digit=0; //空字符串的处理 if (str.length()==0) { return 0; } //空格的处理 while (str.charAt(index)==' '&&index<str.length()) { index++; } //确定符号 if (str.charAt(index)=='+'||str.charAt(index)=='-') { sign=str.charAt(index)=='+'?1:-1; index++; if (sign==1&&str.charAt(index)=='-') { return 0; } if (sign==-1&&str.charAt(index)=='+') { return 0; } } //确定基数 for (int i = index; i < str.length(); i++) { char ch=str.charAt(i); if (ch<'0'||ch>'9') { break; } digit = ch - '0'; if (ch>='0'&&ch<='9') { /* * 溢出的处理 * (Integer.MAX_VALUE)/10<base,(Integer.MAX_VALUE)/10==base&&Integer.MAX_VALUE %10 <digit * 分别表示两种会出现溢出的情况,特别是第二种2147483648时 */ if ((Integer.MAX_VALUE)/10<base||(Integer.MAX_VALUE)/10==base&&Integer.MAX_VALUE %10 <digit) { if (sign==1) { return Integer.MAX_VALUE; } else { return Integer.MIN_VALUE; } } base=10*base+digit; } } return base*sign; }
leetcode——8 String to Integer (atoi)(自定义字符串转整型,如何避开各种奇葩输入)
原文地址:http://blog.csdn.net/zzc8265020/article/details/46618191