String to Integer (atoi)

来源:互联网 发布:如何评价人工智能 编辑:程序博客网 时间:2024/05/16 06:33

题目描述:

Implement atoi to convert a string to an integer.

解题思路:

题目并不难,主要是要考虑各种各样的输入,以及数值超出int范围的情况。

AC代码如下:

class Solution {public:int myAtoi(string str) {long long int ans = 0;int tag = 0;  //表示是否已经出现过非空字符,包括'0'-'9'以及'+'或'-'int flag = 0; //表示数值的正负if (str[0] == '-'){flag = 1;tag = 1;}if (str[0] == '+'){flag = 2;tag = 1;}for (int i = 0; i < str.size(); i++){if ((flag == 1 && i == 0) || (flag == 2 && i == 0)){continue;}else if ((ans == 0 && str[i] == ' ') || (ans == 0 && str[i] == '\t')){if (tag == 0)continue;elsereturn 0;}else if (ans == 0 && str[i] == '-'){if (flag == 0){flag = 1;tag = 1;continue;}else{return 0;}}else if (ans == 0 && str[i] == '+'){if (flag == 0){flag = 2;tag = 1;continue;}else{return 0;}}else{if (str[i] >= '0' && str[i] <= '9'){tag = 1;ans = ans * 10 + str[i] - '0';if ((flag == 0 || flag == 2) && ans>(numeric_limits<int>::max)())return (numeric_limits<int>::max)();if (flag == 1 && -1 * ans <(numeric_limits<int>::min)())return (numeric_limits<int>::min)();}else{if (flag == 1)return -ans;elsereturn ans;}}}if (flag == 1) return -ans;return ans;}};


0 0
原创粉丝点击