实现atoi将字符串转换为整数。

leetcode第八题:

仔细考虑所有可能的输入情况。如果您想要一个挑战,请不要在下面看到并问您自己什么是可能的输入情况。
在找到第一个非空白字符之前,函数首先会丢弃许多空白字符。然后,从这个字符开始,取一个可选的初始加号或减号,然后尽可能多的数字数字,并将其解释为一个数值。
字符串可以包含其他的字符,这些字符组成了整数,这些字符被忽略,对这个函数的行为没有影响。
如果str中的非空白字符的第一个序列不是一个有效的整数,或者如果没有这样的序列存在,因为任何一个str是空的,或者它只包含空白字符,那么就不会执行转换。

如果不能执行有效的转换,则返回零值。如果正确的值超出了可表示值的范围,则返回INT_MAX(2147483647)或INT_MIN(-2147483648)。

示例代码如下,各种情况的判断,代码来自Discuss:

 public static int myAtoi(String str) {
		 int index=0,sign=1, total = 0;
		 if(str.length()==0)
			 return 0;
		 while(str.charAt(index)==' '&&index<str.length()){
			 index++;
		 }
		 if(str.charAt(index)=='+'||str.charAt(index)=='-'){
			 sign = str.charAt(index)=='+'?1:-1;
			 index++;
		 }
		 while(index<str.length()){
			 int digit= str.charAt(index)-'0';
			 if (digit<0||digit>9){
				 break;
			 }
			 if(Integer.MAX_VALUE/10 < total || Integer.MAX_VALUE/10 == total && Integer.MAX_VALUE %10 < digit){
				 return sign == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
			 }
			 total = 10 * total + digit;
		        index ++;
		 }
		 return total * sign;
	    }
欢迎加入Java交流群691761026
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值