题目
解
我的解和官方的解用时差不多,主要是想要秀一下string的用法(int和string的互换、string和vector的联系、string的find)。
// my
class Solution {
public:
int reverse(int x) {
if (x == 0)
return 0;
string num_str = to_string(x);
std::reverse(num_str.begin(), num_str.end());
num_str = string(num_str, num_str.find_first_not_of('0'));
string flag = "";
if (num_str.back() == '-')
{
num_str.pop_back();
flag = "-";
}
if (num_str.size() > 10)
return 0;
else if (num_str.size() < 10){
}
else{
// 2147483647
// -2147483648
if(flag == ""){
if(num_str > "2147483647"){
return 0;
}
}
else{
if(num_str > "2147483648"){
return 0;
}
}
}
return stoi(flag + num_str);
}
};
// official
class Solution {
public:
int reverse(int x) {
int rev = 0;
while (x != 0) {
int pop = x % 10;
x /= 10;
if (rev > INT_MAX/10 || (rev == INT_MAX / 10 && pop > 7)) return 0;
if (rev < INT_MIN/10 || (rev == INT_MIN / 10 && pop < -8)) return 0;
rev = rev * 10 + pop;
}
return rev;
}
};