1.题目描述
实现函数 atoi 。函数的功能为将字符串转化为整数
提示:仔细思考所有可能的输入情况。这个问题没有给出输入的限制,你需要自己考虑所有可能的情况。
示例1
2.思路
1.处理空字符串
2.忽略前置空格
3.保存符号
4.处理非法输入
5.处理溢出
3.代码
class Solution {
public:
int atoi(const char *str) {
int idx = 0;
int sign = 1;
int val = 0;
//1.空字符串
if(strlen(str) == 0){
return 0;
}
//2.忽略前置空格
while(str[idx] == ' '){
++idx;
}
//3.记录符号
if(str[idx] == '-'){
sign = -1;
++idx;
}
if(str[idx] == '+'){
++idx;
}
for(; idx < strlen(str); ++idx){
//4.处理非法值
if(str[idx] > '9'){
break;
}
//5.处理溢出
if(val > INT_MAX / 10 || (val == INT_MAX / 10 && INT_MAX % 10 < str[idx] - '0')){
return sign == 1 ? INT_MAX : INT_MIN;
}
val = val * 10 + str[idx] - '0';
}
return val * sign;
}
};
4.复杂度分析
时间复杂度:O(n)
空间复杂度:O(1)