在这里记录我所写过的每一段代码
2020/9/19
leetcode-初级算法-字符串-字符串转换整数 (atoi)
基本思想,分情况进行处理,每种情况的实现都类似。
注意:leetcode如果溢出会报错,我使用的VS溢出则为负数。
代码
int myAtoi(char* str) {
int len,i,num;
len = strlen(str);
i = 0;
num = 0;
while (str[i] == 32 && i < len) {
i++;
}
if (i == len) {
return 0;
}
else if (str[i] == '+') {
i++;
while (48 <= str[i] && str[i] <= 57 && i < len) {
if (num > 214748364 || num == 214748364 && str[i] - 48 > 7) { //检查是否会发生溢出
return 2147483647;
}
num = num * 10;
num = num + (str[i] - 48);
if (num < 0) {
return 2147483647;
}
i++;
}
return num;
}
else if (str[i] == '-') {
i++;
while (48 <= str[i] && str[i] <= 57 && i < len) {
if (num > 214748364 || num == 214748364 && str[i] - 48 > 7) {
return -2147483648;
}
num = num * 10;
num = num + (str[i] - 48);
if (num < 0) {
return -2147483648;
}
i++;
}
return -num;
}
else if (48 <= str[i] && str[i] <= 57) {
while (48 <= str[i] && str[i] <= 57 && i < len) {
if (num > 214748364 || num == 214748364 && str[i] - 48 > 7) {
return 2147483647;
}
num = num * 10;
num = num + (str[i] - 48);
if (num < 0) {
return 2147483647;
}
i++;
}
return num;
}
else {
return 0;
}
}
执行结果