8 String to Integer (atoi)

实现一个atoi函数,将一个字符串转换为一个整数。

提示:请仔细的考虑所有可能的输入用例。如果你想挑战的话,请不要浏览一下的内容,自己尝试着思考一下。

aoti函数的要求:

该函数首先在找到第一个非空白字符之前,尽可能多的丢弃空白字符。然后从根据这个字符,取一个可选的初始正负号,

并尽可能多的往下找数值,并将它们解释为相应的数字。

该字符串可以在数字的后面包含其他的字符,这些字符被忽略,并且对这个函数的行为没有影响。

如果字符串中第一批非空白字符不是有效的整数,或者字符串为空或者只包含空白字符,那函数就不执行转换。

如果不能执行有效的转换,则返回零值。如果转换后的值超过了整数可表示的正确范围,返回INT_MAT或INT_MIN。

1.

       public int myAtoi(String str)
	{
		int maxInt = Integer.MAX_VALUE; // 整数的最大值
		int minInt = Integer.MIN_VALUE; // 整数的最小值
		double ans = 0;
		boolean flag = false; // 正负号的标志, 默认表示正
		int st = 0;
		// 如果str是空字符串
		if (str.trim().isEmpty())
		{
			return (int)ans;
		}
		
		char[] array = str.toCharArray();
		// 寻找第一个非空白字符
		while (array[st++] == ' '); // 这里跳出循环时,st又加了一次。 
		// 判断正负号
		if (array[--st] == '-')
		{
			flag = true;
		}
		else if (array[st] == '+')
		{
			;
		}
		else
		{
			st--; // 这样使得下面的for循环第一个为要遍历的数字。
		}
		
		for (int i=st+1; i<array.length; i++)
		{
			// 判断遍历的每一个字符是否是整数
			if (array[i] >= '0' && array[i] <= '9')
			{
				int tmp = array[i] - '0';
				ans = ans * 10 + tmp;
			}
			else
			{
				break;
			}
		}
		
		// 还原数值的正负
		if (flag==true)
			ans = -ans;
		
		// 判断转换后的整数是否在整数的合法范围内
		if (ans > maxInt)
			ans = maxInt;
		if (ans < minInt)
			ans = minInt;
		return (int)ans;
	}






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值