1、题目

2、解法
class Solution {
public int myAtoi(String str) {
int rev = 0;
char[] charList = str.toCharArray();
int length = str.length();
int zf = 1;
int i = 0;
int pop = 0;
for(; i < length; i++){
if(charList[i] == ' '){
continue;
}else{
if(charList[i] == '-'){
i++;
zf = -1;
break;
}
if(charList[i] == '+'){
i++;
break;
}
if(charList[i] <'0' || charList[i] >'9'){
return 0;
}else{
break;
}
}
}
if(i == length){
return 0;
}
for(;i < length; i++){
if(charList[i] <'0' || charList[i] >'9'){
return rev;
}
pop = (charList[i] -48) * zf;
if(rev>Integer.MAX_VALUE/10 || (rev == Integer.MAX_VALUE / 10 && pop > 7)){
return Integer.MAX_VALUE;
}
if(rev<Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)){
return Integer.MIN_VALUE;
}
rev = rev * 10 + pop;
}
return rev;
}
}
时间复杂度O(n),空间复杂度O(1)
3、思考
- 要考虑很多个条件:
👉如果首位是空格,就continue
👉如果是“+”或者“-”,要标记符号,设置整数为1或-1
👉如果非数字、不含字符、含空白字符、达到长度,要返回0
👉注意整数的范围(MAX、MIN)
503

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



