首页 > 学院 > 开发设计 > 正文

8:String to Integer

2019-11-08 18:45:01
字体:
来源:转载
供稿:网友

思考:本题的难点体现在对各种情况能否全部覆盖,已经对细节的把握上。

可能出现的各种特殊情况:

1.null or empty input

2.+& -

3.white space

4.max and min of integer

public class atoi {	 	 public int luoAtoi(String str){		if(str==null){			return 0;		 }		str = str.trim();		if(str.length()==0){			return 0;		}		long result = 0;		int flag = 1;	//标记正负			int i = 0;	    //索引		if(str.charAt(i) == '+'){			i++;					}		else if(str.charAt(i) == '-'){			i++;			flag = -1;		}		for(;i<str.length();i++){			if((str.charAt(i)<'0')||(str.charAt(i)>'9')){				break;			}			else{				result = result*10 + (str.charAt(i) - '0');			}			if(result>Integer.MAX_VALUE){				break;			}		}		result = result*flag;		if(result >= Integer.MAX_VALUE){			return Integer.MAX_VALUE;		}		if(result <= Integer.MIN_VALUE){			return Integer.MIN_VALUE;		}		return (int)result;	 }}

细节点:1.返回的result变量需要是long型,满足String的值可能已经大于Integer的最大值,不然就会取负。2.char类型相减:因为char类型实际上是ASCII码对应的整数,所以取与'0'的差与10进制整数符合。3.一旦result大于Integer最大值,需要跳出循环,不然可能导致String的值大于long型的最大值。4.最后记得把result强转为int型
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表