题目描述:将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
思路:从前到后判断
1)是否有正负号
2)是否有非数字字符
3)是否溢出
public class Solution { public int StrToInt(String str) { if(str==null) return 0; if(str.length()==0) return 0; int num=0; int flag=1;//默认是正数 int len=str.length(); for(int i=0;i<len;i++){ if(i==0&&str.charAt(i)=='+'){ flag=1; }else if(i==0&&str.charAt(i)=='-'){ flag=0; }else if(str.charAt(i)>='0'&&str.charAt(i)<='9'){ num=num*10 + str.charAt(i) - '0'; //判断溢出 if(num>Integer.MAX_VALUE) return 0; }else{ return 0; } } //负数可以表示为0-num return flag==1?num:-num; } }