String to Integer(atoi)
题目描述
输入一个字符串,将其转换为int类型数字,规则如下:
1.去掉头部空格
2.处理-+
3.处理数字
4.处理尾部非数字
5.若溢出,则取int边界
分析
模拟,没啥说的
代码
class Solution {
public:
int myAtoi(string s) {
int cur = 0, len = s.size(), flag = 1;
long long ans = 0;
while (cur < len && s[cur] == ' ')
cur++;
if (cur < len && (s[cur] == '-' || s[cur] == '+'))
{
if (cur < len && s[cur] == '-')
{
flag = -1 * flag;
}
cur++;
}
while (cur < len && s[cur] >= '0' && s[cur] <= '9')
{
ans = ans * 10 + s[cur] - '0';
if (ans > ((long(1) << 31) - 1))
{
break;
}
cur++;
}
ans = ans * flag;
if (ans < (-1 * (long(1) << 31)))
ans = -1 * (long(1) << 31);
if (ans > (long(1) << 31) - 1)
ans = (long(1) << 31) - 1;
return int(ans);
}
};
思考
边界应该可以直接写吧,不需要移来移去的