今天在刷LeetCode中遇到String to Integer (atoi)https://leetcode.com/problems/string-to-integer-atoi/#/description这个问题,提交了很多遍才AC了,感触优点深刻呀。。。
其实主要还是输入的可能性太多了,这里记一下几种情况
“ 3424”//前面有空格型的
“ -33242”//有空格又有符号型的
"-+435"//有多个符号,返回0
"ew3345"//遇到非数字,返回0
“-4243a34”//中间遇到非数字,返回遇到非数字之前的值
“4352546354364325”int整数会溢出的,返回int的最大范围值
其实想想,这样的测试用例也不算太难,要我说呀,应该允许有多个符号才好玩,比如:
“-- + - ++32453”//此处返回-32453
这里贴上我的已经AC了的代码
class Solution {
public:
int myAtoi(string str) {
if(str.empty()) return 0;
long long r=0;
bool _=false;
bool toolong=false;
int i=0,start=0;
while(str[i]==' ') i++;
if(str[i]=='-')
{
i++;_=true;
}
else if(str[i]=='+')
{
i++;
}
start=i;
for(;i<str.size();i++)
{
if(str[i]<'0'||str[i]>'9')
break;
r=r*10+str[i]-'0';
}
if(i-start>11)
{
if(_) r=-pow(2,31);
else r= pow(2,31)-1;
}
else
{
r= _?-r:r;
if(r>pow(2,31)-1) r= pow(2,31)-1;
if(r<-pow(2,31)) r= -pow(2,31);
}
return r;
}
};
本文详细解析了LeetCode中的StringtoInteger(atoi)题目,并分享了一种通过多种测试用例的实现方法,包括如何处理边界条件及特殊字符。
515

被折叠的 条评论
为什么被折叠?



