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

LeetCode 8-9 Solutions

2018-01-01 21:55 295 查看

8. String to Integer(atoi)

class Solution {
public:
bool isDigit(char c) { return c >= '0' and c <='9'; }

int myAtoi(string str) {
size_t idx = 0;
size_t len = str.length();
int sign = 1;
double val = 0;

for (size_t i = 0; i < len; ++i) { // 1st none white space character
if (str[i] == ' ') ++idx;
else break;
}
// while (str[idx] == ' ') ++idx;
if (idx == len) return 0;

// sign(followed by integeral characters)
if (str[idx] == '+') {
sign = 1;
if (!isDigit(str[++idx])) {
return 0;
}
} else if (str[idx] == '-') {
sign = -1;
if (!isDigit(str[++idx])) {
return 0;
}
}

for (; idx < len; ++idx) {
if (!isDigit(str[idx])) break;
val = (str[idx] - '0') + val * 10;
}

val *= sign;
if (val > INT_MAX) return INT_MAX;
else if (val < INT_MIN) return INT_MIN;
else return val;
}
};


this code can pass all the testcases, but has ugly style. One should pay attention on the type of
val
,
long long
or
unsigned long long
will fail on some testcases. And I still haven’t figured out the reason.

9. Palindrome Number

class Solution {
public:
bool isPalindrome(int x) {
if (x < 0) return false;
int _x = x, y = 0;
while (x) {
y = y * 10 + x % 10;
x /= 10;
}
return _x == y;
}
};


this solution can pass all the testcases, but may has problem on (reversed)integer overflow(say input number is 1463847418), and used two extra space.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode c++