LeetCode题目8:String to Integer (atoi)

嗯,这里是简介,主题配置内可以修改,如留空则不显示

LeetCode题目8:String to Integer (atoi)

原文链接:https://leetcode.com/problems/string-to-integer-atoi/

原题目:

Implement atoi to convert a string to an integer.

Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.

Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.

思路:其实就是C++的atoi函数,遍历字符串逐一识别每个字符就ok了。最重要的就是边界问题,这个我在我自己的程序上调试了很久都不行,边界问题一定要小心点 思考。其中的注释部分是我写的,但是边界问题没有处理好,是的部分的测试用例不能通过。

代码如下:带测试用例:


#include <iostream>
#include <math.h>
#include <string>

using namespace std;

/*
class Solution {
public:
    int myAtoi(string str) {
		int sign = 0;
		int i=0;
		int MAX = 2147483647;

		while((str[i]<='0' || str[i]>'9') && str[i] != '-' && str[i]!='+' && i<str.length()) ++i;

		if (str[i]=='-')
		{
			sign = 1;
			++i;
		}else if (str[i]=='+')
		{
			sign = 0;
			++i;
		}

		int num = 0;
		while (str[i]>='0' && str[i]<='9')
		{
			if (num>=MAX/10)
			{
				num= MAX;
				break;
			}
			num = num*10 + str[i]-'0'; 
			++i;
		}

		if (sign==1 )
		{
			num*=(-1);
			if (str[i]-'0'==8 || str[i]-'0'==9 )
			{
				num--;
			}
		}

		return num;
    }
};
*/

class Solution
{
public:
    int myAtoi(const char *str)
    {
        int i, s = 0, sign = 1;

        for(i = 0; str[i] == ' '; ++ i);

        if(str[i] == '-')
        {
            ++i;
            sign = -1;
        }
        else if(str[i] == '+')
            ++i;

        while(str[i] >= '0' && str[i] <= '9')
        {
            if(s > INT_MAX / 10 || ( s == INT_MAX / 10 && str[i] >= '8'))
                return sign == 1 ? INT_MAX : INT_MIN;
            s = s * 10 + (str[i++] - '0');
        }

        return sign * s;
    }
};

int main(){
	Solution *s = new Solution;
	cout<<s->myAtoi("-0012a42")<<endl;

	cout<<INT_MAX<<endl;
	return 0;
}




发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Hello world. 豫ICP备16008819号-1.

Power by Z-BlogPHP  Theme by wzdaxue