🌈个人主页:羽晨同学
💫个人格言:“成为自己未来的主人~”
题目
题目分析
对于这道题目而言,我们需要做到的是将字符串转换成整数。
这里我们需要注意几个点
- 首先我们需要保证下标在这个范围之内,所以我们会在每个条件前面加上一个判定条件
- 不为空
- 考虑它的范围,可能最大,可能最小,要是超过最大最小范围就用最大数和最小数
- 分开做,先考虑它的标志,+,-,-+,+-,这几种,然后考虑每位的数字
根据这些,我们就可以得到这道题目的代码。
class Solution {
public:
//底部坐标
int myAtoi(string str) {
int index = 0,
digital = 0,//第一位的值
sign = 1;
int total = 0;
//判断是否为空
if (str.empty())
{
return 0;
}
//不为空,首先消除空格
while (index < str.size() && str[index] == ' ')
index++;
//消除空格之后判断首位
if (index < str.size() && str[index] == '-')
{
if(str[index+1]=='+')
{
sign=0;
}
else
{
index++;
sign = -1;
}
}
if (index < str.size() && str[index] == '+')
{
if(str[index+1]=='-')
{
sign=0;
}
else
{
index++;
sign = 1;
}
}
while (index < str.size())
{
digital = str[index] - '0';
if (digital < 0 || digital >9)
break;
// 检查是否溢出
if (total > INT_MAX / 10 || (total == INT_MAX / 10 && digital > INT_MAX % 10))
return (sign == 1) ? INT_MAX : INT_MIN;
total = 10 * total + digital;
index++;
}
return total * sign;
}
};