关于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;
	}
};

 

转载于:https://www.cnblogs.com/Rainlee007/p/5879706.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值