标签:math mat 运行时 忽略 long 运行时间 etc min 区别
实现一个atoi
函数,具体功能如下:
class Solution {
public:
int myAtoi(string str) {
int len = str.size(), st = 0;
for(int i = 0; i < len; ++i)
if(str[i] != ' ')
{
st = i;
break;
}
//cout << st << ' ' << str[st] << endl;
bool flag = true;
if(str[st] == '+')
++st;
else if(str[st] == '-')
{
flag = false;
++st;
}
//cout << flag << endl;
int res = 0;
if(isdigit(str[st]))
{
while(st < len && isdigit(str[st]))
{
//cout << "res = " << res << endl;
int add = str[st++] - '0';
if( flag && ( res > INT_MAX / 10 || ( res == INT_MAX / 10 && add >= 7))) return INT_MAX;
if(!flag && (-res < INT_MIN / 10 || (-res == INT_MIN / 10 && add >= 8))) return INT_MIN;
res = res * 10 + add;
//cout << res << ' ' << add << ' ' << st << endl;
}
//cout << res << endl;
if(!flag) res = -res;
return res;
}
else
return 0;
}
};
运行时间只击败了60%的用户。。看了下最快的代码,思路没啥区别,就是少了几个判断,没必要再“优化”了。
如:中间的存储答案的变量是用的long
(我一开始也打算用long的)、判断符号位直接用的int
(符号和正号的ASSIC码正好差2——用44 - str[i]
正好等于1或-1)。
标签:math mat 运行时 忽略 long 运行时间 etc min 区别
原文地址:https://www.cnblogs.com/songjy11611/p/12151054.html