[LeetCode] String to Integer (atoi)

沒有和標準的程序比較,主要難點是需求不明確,自己想得不充分,溢出的問題原先根本沒有考慮。

class Solution {
public:
    int atoi(const char *str) {
		int result = 0;
		int sign = 1;

		// trim space
		while (*str == ' ') {
			++str;
		}

		// get sign
		if (*str == '-') {
			sign = -1;
			++str;
		}
		else if (*str == '+') {
			++str;
		}

		while (*str != '\0') {
			int num = *str - '0';
			if (num >= 0 && num <= 9) {
				if (result > INT_MAX / 10) {
					return sign > 0 ? INT_MAX : INT_MIN;
				}
				result *= 10;
				result += num;
				// overflow
				if (result < 0) {
					return sign > 0 ? INT_MAX : INT_MIN;
				}
			}
			else {
				return result * sign;
			}
			str++;
		}

		return result * sign;
    }
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章