<img src="https://img-blog.csdn.net/20141214224710373?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFwZW5nMDgwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);" />
这个题目比较简单,但是需要考虑的可能性太多了,验证case也比较奇怪,例如str为"-24a2"返回的数值为-24。代码没什么水平,根据各种验证case修改的,比较乱,懒得优化了。
public class Solution {
public int atoi(String str) {
if(str == null) {
return 0;
}
String noSpaceStr = str.trim();
if("".equals(noSpaceStr)) {
return 0;
}
int position = 0;
if(noSpaceStr.charAt(0) == '-' || noSpaceStr.charAt(0) == '+') {
position = 1;
}
for(; position < noSpaceStr.length();) {
if(noSpaceStr.charAt(position) >= '0' && noSpaceStr.charAt(position) <= '9') {
position++;
} else {
break;
}
}
if(position == 0) {
return 0;
}
String finalStr = noSpaceStr.substring(0, position);
if(finalStr.length() == 1 && (finalStr.charAt(0) < '0' || finalStr.charAt(0) > '9')) {
return 0;
}
int i;
try{
i = Integer.valueOf(finalStr);
} catch(Exception e) {
if(finalStr.charAt(0) == '-') {
return Integer.MIN_VALUE;
}
return Integer.MAX_VALUE;
}
return i;
}
}