class Solution {public:int isValidChar(char c) {if (c >= '0' && c <= '9')return 1;elsereturn 0;}int myAtoi(string str) {double testVal = 0.0;int absVal = 0;int sign = 1;int i = 0;// prefixfor (i = 0; i < str.length(); i++) {// whitespaceif (str[i] == ' ')continue;else if (str[i] == '+' || str[i] == '-') {if (str[i] == '-') sign = -1;i++;break;} else if (isValidChar(str[i])) {break;} else { // illegal prefixreturn 0;}}for (; i< str.length(); i++) {if (isValidChar(str[i])) {testVal = 10.0 * absVal + (str[i] - '0');if (sign * testVal >= INT_MAX) {return INT_MAX;} else if (sign * testVal <= INT_MIN) {return INT_MIN;} else {absVal = (int) testVal;}} else {break;}}return sign * absVal;}};
2019年10月30日 星期三
[LeetCode] String to Integer (atoi)
思路: 先處理 prefix, 分別判斷合法字元 +, -, 後面再處理數字部分, 以 double 暫存判斷是否會 overflow or underflow
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言