关于string转整数

又是leetcode的easy级别题,很基本的题目,却漏考虑很多情况,动手前一定要考虑清楚呀!!!

就当做锻炼写作能力吧,先上题目!

将文本转换成整数,注意一下几点:

1.文本里面第一个不为空白的字符应该为数字或‘+’、‘-’,否则返回0;

2.文本中数字后面的文本不影响结果;

3.转换后的值若超过了int的最值应返回最值。

上代码吧!

class Solution {
public:
	int myAtoi(string str) {
		int start = 0;
		for (int i = 0; i!= str.length(); i++)
		{
			if (str[i] == ' ')
				start++;
			else
				break;
		}
		if(start>=str.length())
		    return 0;
		    
		int p = 0,t=0;
		if (str[start] == '-')
		{
			start++;
			p = 1;
		}
		else if (str[start] == '+')
			start++;
		for (; start <str.length(); start++)
		{
			
			char m = str[start] - '0';
			if (m >= 0 && m <= 9)
			{
			    if(t>INT_MAX/10)
			        if(p==0)
			            return INT_MAX;
			        else
			            return INT_MIN;
		    	t *= 10;
			        if(p==0&&t>INT_MAX-m)
			            return INT_MAX;
			        else if(p!=0&&-t<(INT_MIN+m))
			            return INT_MIN;
				t += m;
			}
			else
				break;
		}
		return p==0?t:-t;
	}
};

 

posted @ 2016-09-17 21:15  Rainlin  阅读(412)  评论(0编辑  收藏  举报