
方法1: 这题主要就是考虑edge cases,除了耐心还是耐心。时间复杂n,空间复杂1.
class Solution {
public int myAtoi(String s) {
String str = s.trim();
if(str.length() == 0) return 0;
if((int)str.charAt(0) != 43 && (int)str.charAt(0) != 45 && ((int)str.charAt(0) <= 47 ||(int)str.charAt(0) >= 58)){
return 0;
}
int len = str.length();
int res = 0;
boolean flag = false;
boolean firstFlag = false;
boolean hh = false;
for(int i = 0; i < len; ++i){
char c = str.charAt(i);
int ascii = (int)c;
if(hh == true && (ascii <=47 || ascii >=58) ){ // test for "+--12"
break;
}else if(ascii == 43){
if(firstFlag) return 0;
firstFlag = true;
}else if(ascii == 45){
if(firstFlag) return 0;
firstFlag = true;
flag = true;
}else if( 47 < ascii && ascii < 58){
hh = true;
int value = c - '0';
if(res > Integer.MAX_VALUE / 10 || (res == Integer.MAX_VALUE / 10 && value > Integer.MAX_VALUE % 10)) {
return (flag == false) ? Integer.MAX_VALUE : Integer.MIN_VALUE;
}
res = res * 10 + value;
}else{
break;
}
}
if(flag) return res * (-1);
return res;
}
}
总结:
- 耐心+细心+不要抱怨=成功
2676

被折叠的 条评论
为什么被折叠?



