概述
解答思路:
1.转换注意正负号的问题,溢出的问题;
2.特殊的规则,前面允许有空格,空格要忽略掉;正负号不能同时出现;一段数字遇到非数字截断;
这样分析后思路就清晰了:
首先,判断数字之前的字符,分三类,空格,正负号,其他非数字字符,不符合条件直接return;
其次,对数字处理,这里需要注意溢出越界的问题;
最后,如果数字后面还接了其他字符,截断。
理解成对一个字符串的顺序判断,从前往后依次判断能否满足限定条件。
注意,分类一定要清晰!!!
class Solution {
public:
int myAtoi(string str) {
long s =0;
int flag = 1;
int i=0;
int count = 0;
while(str[i]==' ')
{
i++;
}
if(str[i]=='+'||str[i]=='-')
{
if(str[i]=='+') flag = 1;
if(str[i]=='-') flag = -1;
i++;
}
if(str[i]>'9'||str[i]<'0')
return 0;
for(;i<str.length();i++)
{
if (str[i] >= '0'&& str[i] <= '9')
{
s = s * 10 + str[i] - '0';
count++;
}
else
break;
if(count >11)
{
if(flag == -1) return INT_MIN;
if(flag == 1) return INT_MAX;
}
}
s = s*flag;
if (s>INT_MAX) s = INT_MAX;
if (s<INT_MIN) s = INT_MIN;
return s;
}
};
最后
以上就是专注板凳为你收集整理的LeetCode_8_String to Integer (atoi)的全部内容,希望文章能够帮你解决LeetCode_8_String to Integer (atoi)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复