AcWing 87. 把字符串转换成整数
原题链接
简单
作者:
Kiyomi
,
2024-09-08 20:00:00
,
所有人可见
,
阅读 2
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
/*
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
*/
class Solution {
public:
int strToInt(string str) {
int res=0;
bool positive=true;
int i = 0;
int len = str.size();
while(str[i]==' '&&i<len){
i++;
}
if((str[i]=='+'||str[i]=='-')&&i<len){
positive=(str[i]=='+');
i++;
}
while(str[i]>='0'&&str[i]<='9'&&i<len){
int digit = str[i]-'0';
if(res>(INT_MAX-digit)/10){
/*不可判断(res*10+digit)>INT_MAX,
因为这是一种不安全的溢出检查方式,可能
在检查之前就已经溢出了。
*/
return positive?INT_MAX:INT_MIN;
}
res=res*10+digit;
i++;
}
if(positive) return res;
else return -res;
}
};