思考:本題的難點體現(xiàn)在對各種情況能否全部覆蓋,已經(jīng)對細(xì)節(jié)的把握上。
可能出現(xiàn)的各種特殊情況:
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; //標(biāo)記正負(fù) 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; }}細(xì)節(jié)點:1.返回的result變量需要是long型,滿足String的值可能已經(jīng)大于Integer的最大值,不然就會取負(fù)。2.char類型相減:因為char類型實際上是ASCII碼對應(yīng)的整數(shù),所以取與'0'的差與10進制整數(shù)符合。3.一旦result大于Integer最大值,需要跳出循環(huán),不然可能導(dǎo)致String的值大于long型的最大值。4.最后記得把result強轉(zhuǎn)為int型
新聞熱點
疑難解答