//C++ 去字符串两边的空格 实现trim
void trim(string &s){
if (s.empty()) return;
s.erase(0,s.find_first_not_of(" "));
s.erase(s.find_last_not_of(" ") + 1);
}
inline string& leftTrim(string &s){
string::iterator p=find_if(s.begin(),s.end(),not1(ptr_fun<int, int>(isspace)));
s.erase(s.begin(),p);
return s;
}
inline string& rightTrim(string &s){
string::reverse_iterator p=find_if(s.rbegin(),s.rend(),not1(ptr_fun<int, int>(isspace)));
s.erase(p.base(),s.end());
return s;
}
inline string& trim(string &s){
leftTrim(rightTrim(s));
return s;
}
INT_MAX的值为2147483647
INT_MIN的值为-2147483648
实战演练
Leetcode - 8 字符串转换整数 (atoi)
class Solution {
public:
int myAtoi(string s) {
int len=s.size();
int i=0;
int num=0;
int sign=1;//判断正负号
//忽略前置空格
while(i<len&&s[i]==' '){
i++;
}
//处理正负号
if(s[i]=='+'||s[i]=='-'){
sign=(s[i++]=='-')?-1:1;
}
while(i<len&&isdigit(s[i])){
if(num > INT_MAX/10 || (num == INT_MAX/10 && s[i]-'0' > 7)){//是否溢出
return sign == 1 ? INT_MAX : INT_MIN;
}
// if(num < INT_MIN/10 || (num == INT_MIN/10 && s[i]-'0' < -8)){
// return sign == 1 ? INT_MAX : INT_MIN;
// }
num=num*10+(s[i++]-'0');//不加括号有溢出风险
}
return num*sign;
}
};