您的位置:首页 > 编程语言 > C语言/C++

String to Integer (atoi)

2016-06-12 17:23 302 查看

c++

class Solution {
public:
int myAtoi(string str) {
if (str.empty()) return 0;
string cleanStr;
bool hasdigit = false;
for (auto v : str) {
if (isdigit(v) || v== '+' || v=='-') {
cleanStr.push_back(v);
hasdigit = true;
}
if ((hasdigit == true) && (!isdigit(v) && v!= '+' && v!='-'))
break;

if ((hasdigit == false) && !isspace(v) && (!isdigit(v) && v!= '+' && v!='-'))
return 0;
}
int cnt = 0;
for (auto v : cleanStr) {
cnt += !isdigit(v);
}
//cout <<"cleanStr: "<< cleanStr << endl;

if (cleanStr.size() > 11 && cleanStr[0] == '-')
return INT_MIN;
if (cleanStr.size() > 11)
return INT_MAX;

if (cnt > 1) return 0;
long long value = string2int(cleanStr);

if (value > INT_MAX ) return INT_MAX;
if (value < INT_MIN) return INT_MIN;
return value;
}
private:
long long string2int(string str) {
long long res=0;
long long flag=1;
if (str[0] == '-'){
flag = -1;
str.erase(str.begin());
}else if (str[0] == '+') {
flag = 1;
str.erase(str.begin());
}
for (auto v : str) {
res *= 10;
res += v - '0';
}
return res * flag;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言