又是leetcode的easy级别题,很基本的题目,却漏考虑很多情况,动手前一定要考虑清楚呀!!!
就当做锻炼写作能力吧,先上题目!
将文本转换成整数,注意一下几点:
1.文本里面第一个不为空白的字符应该为数字或‘+’、‘-’,否则返回0;
2.文本中数字后面的文本不影响结果;
3.转换后的值若超过了int的最值应返回最值。
上代码吧!
class Solution {
public:
int myAtoi(string str) {
int start = 0;
for (int i = 0; i!= str.length(); i++)
{
if (str[i] == ' ')
start++;
else
break;
}
if(start>=str.length())
return 0;
int p = 0,t=0;
if (str[start] == '-')
{
start++;
p = 1;
}
else if (str[start] == '+')
start++;
for (; start <str.length(); start++)
{
char m = str[start] - '0';
if (m >= 0 && m <= 9)
{
if(t>INT_MAX/10)
if(p==0)
return INT_MAX;
else
return INT_MIN;
t *= 10;
if(p==0&&t>INT_MAX-m)
return INT_MAX;
else if(p!=0&&-t<(INT_MIN+m))
return INT_MIN;
t += m;
}
else
break;
}
return p==0?t:-t;
}
};