String to Integer (atoi)
public class Solution { public int atoi(String str) { if(str.length() == 0 || str == null){ return 0; } str = str.trim(); boolean positiveflag = true; if(str.charAt(0) == '+'){ str = str.substring(1); }else if(str.charAt(0) == '-'){ positiveflag = false; str = str.substring(1); } long result = 0; for(int i =0; i< str.length(); i++){ char d = str.charAt(i); if(d >= '0' && d <= '9'){ result = result*10 + (d-'0'); }else{ break; } } if(!positiveflag){ result = result*(-1); } if(result < Integer.MIN_VALUE){ return Integer.MIN_VALUE; } if(result > Integer.MAX_VALUE){ return Integer.MAX_VALUE; } return (int)result; } }
ref:http://www.cnblogs.com/feiling/p/3158218.html
本题需要注意如下几点:
- 开头有任意多个空格,需要trim
- 数字开头可能有符号,+,—
- 输入可能不是一个整数,如12dds返回12;abc返回0
- 输入整数可能会超过整数表示范围,如超过则返回 INT_MAX (2147483647) or INT_MIN (-2147483648)