C/C++ 中有一个函数 atoi,它可以将一个字符串转换为 32-bit 的有符号整数,请实现 myAtoi 函数完成同样的功能。 忽略前面的空白字符。 检查下一个字符是否是 '+' 和 '-',如果没有出现,默认为正数。 读取下一个字符,直到遇到非数字字符,或者到字符串的末尾。 将读入的数字字符转换为对应的整数 (i.e. "123" -> 123, "0023" -> 23). 如果没有读取任何一个数字,则结果为 0. 如果超出了整数的表示范围 [-231, 231 - 1], 则将小于 -231 的值 转换为 -231,大于 231 - 1 的值转换为 231 - 1. int myAtoi(const char* s);
时间: 2024-03-29 22:34:13 浏览: 127
字符串转换整数 (atoi).cpp
好的,这是一个经典的字符串转整数的问题,下面是 myAtoi 函数的实现:
```c++
int myAtoi(const char* s) {
int sign = 1;
int num = 0;
int i = 0;
while (s[i] == ' ') {
i++;
}
if (s[i] == '-') {
sign = -1;
i++;
} else if (s[i] == '+') {
i++;
}
while (s[i] >= '0' && s[i] <= '9') {
int digit = s[i] - '0';
if (num > (INT_MAX - digit) / 10) {
return sign > 0 ? INT_MAX : INT_MIN;
}
num = num * 10 + digit;
i++;
}
return sign * num;
}
```
该函数首先跳过字符串开头的空白字符,然后检查下一个字符是否是 '+' 或 '-',如果是,就记录符号并跳过该字符。接着读取数字字符,将其转换为对应的整数,并计算累加和。在计算累加和时需要判断是否超出整数的表示范围,如果超出则返回 INT_MAX 或 INT_MIN。最后返回累加和乘以符号即可。
阅读全文