思路:
atoi函数,如果是string转int的话,stoi参数是const char* 需要调用string的 c_str(),即假设string s = "1233" ,int ans = atoi(s.c_str());
代码:
class Solution {
public:
int myAtoi(string s) {
int n = s.size();
int i=0;
while(i<s.size()&&s[i]==' ') i++;
if(i==s.size()) return 0;
int minue=1;
if(s[i]=='-') minue=-1,i++;
else if(s[i]=='+') minue=+1,i++;
int res = 0;
while(i <= s.size() && isdigit(s[i])){
int t = s[i] - '0';
if(minue < 0 && -res < (INT_MIN + t) / 10) return INT_MIN;
if(minue > 0 && res > (INT_MAX - t) / 10) return INT_MAX;
if(-res * 10 - t == INT_MIN) return INT_MIN;
res = res * 10 + t;
i++;
}
return res * minue;
}
};
评论区