题目链接:https://leetcode.com/problems/string-to-integer-atoi/#/description
原意就是把string型转化成int型,题目不难,但是其中有很多种情况,我最后直接用stoi转化了全是数字的string,比如说遇到字母,符号,空格,溢出的处理办法,经过很多次的测试,终于accept了。
代码如下:
class Solution {
public:
int myAtoi(string str) {
vector<char> vec;
if(str.empty()) return 0;
for(int i=0; i<str.length(); i++){
if( str[i]>='0' && str[i]<='9'){
vec.push_back(str[i]);
}else{
if(str[i]==32 && vec.size()==0)continue;
if(str[i]=='-' || str[i]=='+'){
if(vec.size()==0) vec.push_back(str[i]);
else break;
}
else break;
}
}//for
// for(int i =0; i<vec.size(); i++)
// cout<<vec[i];
// cout<<INT_MAX<<endl<<INT_MIN;
if(vec.empty()) return 0;
string ret;
int result;
if(vec[0]=='+') {
cout<<1;
if(vec.size()==1) return 0;
for(int i =1; i<vec.size(); i++)
ret += vec[i];
try{result = stoi(ret);}catch(...){
return INT_MAX;
}
return result;
}else if(vec[0]=='-'){
cout<<2;
if(vec.size()==1) return 0;
for(int i =1; i<vec.size(); i++)
ret += vec[i];
try{result = stoi(ret);}catch(...){
return INT_MIN;
}
return -result;
}else{
cout<<3;
for(int i =0; i<vec.size(); i++)
ret += vec[i];
try{result = stoi(ret);}catch(...){
// if(result>INT_MAX)
return INT_MAX;
// else if(result<INT_MIN) return INT_MIN;
}
return result;
}
}
};