算法面试_把字符串转换成整数

题目:写一个函数,把输入的字符串转换成整数。
这道题目思路上比较简单,但是要注意细节,比如输入的字符串是不是空指针、空字符串,正负号的注意事项,有没有溢出等等。

接下来我们来编写C++的代码:

enum Status{kValid=0,kInvalid};
int g_nStatus = kValid;

int StrToInt(const char* str)
{
	g_nStatus = kInvalid;
	long long num = 0;
	if(str != nullptr && str != '\0')
	{
		bool minus = false;
		if(*str == '+')
			str++;
		else if(*str == '-')
		{
			str++;
			minus = true;
		}
		if(*str != '\0')
		{
			num = StrToIntCore(str, minus);
		}
	}
	return (int)num;
}

long long StrToIntCore(const char*digit,bool minus)
{
	long long num = 0;
	while(*digit != '\0')
	{
		if(*digit >= '0' && *digit <='9')
		{
			int flag = minus?-1;1;
			num = num*10 + flag*(*digit - '0');
				
			if((!minus && num >0x7FFFFFFF) || (minus && num< (signed int)0x80000000)
			{
				num = 0;
				break;
			}
			digit++;
		}
		else
		{
			num = 0;
			break;
		}
	}
	if(*digit == '\0')
	{
		g_nStatus = kValid;
	}
	return num;
}

你可能感兴趣的:(算法题)