关闭

LeetCode String to Integer (atoi)

475人阅读 评论(0) 收藏 举报
分类:

剑指offer倒数第二道题,用long long 来存整数才能判断相乘是否溢出

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int atoi(const char *str) {
	int i,signal=1;
	long long sum=0;
	if (str==NULL||*str==0)
	{
		return 0;
	}
	while(*str==' '||*str=='\t'||*str=='\n')
	{
		str++;
	}
	if (*str=='-'||*str=='+')
	{
		if (*str=='-')
		{
			signal=-1;
		}
		str++;
	}
	if (*str>'9'||*str<'0')
	{
		return 0;
	}
	while(*str)
	{
		if (*str>'9'||*str<'0')
		{
			return sum;
		}
		if (signal<0)
		{
			if (10*sum < INT_MIN)
			{
				return INT_MIN;
			}
			sum = sum*10 - *str + '0';//sum*10 + -( *str - '0')
			if (sum < INT_MIN)
			{
				return INT_MIN;//-2147483648;-1;
			}
		}
		else
		{
			if ( 10 * sum > INT_MAX)//if (10*sum<0)
			{
				return INT_MAX;
			}
			sum = sum*10 + *str - '0';//sum*10 + ( *str - '0')
			if (sum > INT_MAX)
			{
				return INT_MAX;//(2147483647);
			}
		}
		str++;
	}
	return sum;
}

int _tmain(int argc, _TCHAR* argv[])
{
	char s[100]="    10522545459";
	cout<<atoi(s)<<endl;
	system("pause");
	return 0;
}
以后把主函数也贴上,便于测试了

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:173772次
    • 积分:3967
    • 等级:
    • 排名:第8345名
    • 原创:201篇
    • 转载:56篇
    • 译文:0篇
    • 评论:21条
    最新评论
    导航标签
    http://zhedahht.blog.163.com/blog/#m=0 http://blog.csdn.net/v_july_v/article/details/6015165 程序员编程艺术:http://blog.csdn.net/v_JULY_v/article/details/6460494 剑指offer http://zhedahht.blog.163.com/blog/#m=0