LeetCode修炼——字符串转换整数(atoi)

LeetCode修炼——字符串转换整数(atoi)


题目描述

在这里插入图片描述
在这里插入图片描述

解题思路

由题目可知,解题需要三个步骤。首先,先去除开头的空格;其次,获取符号位;最后转字符串为整数。
处理空格问题,只需要循环判断直到不为" “。
获取符号位,首先默认符号位为正(设为1),当符号位为”-"时,标记值为-1.
处理字符串转整数型,判断当前字符是否在字符0到字符9之间,res=res*10+str.charAt(index)-‘0’;
最后别忘了判断是否过界。献上Java代码。

class Solution {
    public int myAtoi(String str) {
      if (str==null)
      {
          return 0;
      }else{
        int index=0,sign=1,len=str.length();
          double res=0;
        //调空格
        while(index<len&&str.charAt(index)==' ') 
            index++;
        //获取符号位
        if((index<len)&&(str.charAt(index)=='+'||str.charAt(index)=='-'))
        {
            sign=1-2*((str.charAt(index)=='-')?1:0);
            index++;
        }
        //取数字,碰到非数字退出循环
        while(index<len&&str.charAt(index)>='0'&&str.charAt(index)<='9'){
            res=res*10+str.charAt(index)-'0';
            index++;
        }
          if(res>Integer.MAX_VALUE){
                if(sign==1)
                    return Integer.MAX_VALUE;
                else
                    return Integer.MIN_VALUE;
            }else{
               return sign*(int)res;
          }
      }
    }
}

测试结果

在这里插入图片描述


如果有疑问或更好的idea,欢迎交流讨论,谢谢~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值