LeetCode 之 String to Integer (atoi)

题目链接:String to Integer (atoi)
这道题目的关键的地方是要考虑到很多中不同的情况。
1、去除字符串前的空格;
2、除空格以外的第一个字符需要是+/-或者有效的数字0-9,;
3、如果第一个字符为+/-,其后紧接着的必须为有效数字直到遇到非数字即可;
4、如果第一个字符不为运算符或者紧接着运算符的不是有效的数字,则转换无效,返回0;
5、如果第一个字符为“-”,则需要将转换后的正数转为负数;
6、要考虑转换后的数值范围,如果正确值超出了可表示值的范围,则返回INT_MAX(2147483647)或INT_MIN(-2147483648);

代码如下:

class Solution {
    public int myAtoi(String str) {
        int i = 0;
        if(str.length()==0)
            return 0;
        str = str.trim();  \\去掉字符串头尾的空格
        double re = 0;
        int flag = 0; 
        //首先判断第一个非空字符是否为“+/-”
        if(str.charAt(0)=='+')
            i++;
        if(str.charAt(0)=='-'){
            flag = 1;
            i++; 
        }
        //循环遍历,并将其转换为对应的数值,知道遇到第一个非数字字符或者超过字符串的范围
        while(i<str.length()&&str.charAt(i)>='0'&&str.charAt(i)<='9'){
            int tmp = str.charAt(i) - '0';
            re = re*10 + tmp;
            i++;
        }
        //如果运算符号为“-”,则取反
        if (flag == 1)  
            re = -re;  
        //判断数值的范围是否超过int类型
        if (re > Integer.MAX_VALUE)  
            return Integer.MAX_VALUE; 
        if (re < Integer.MIN_VALUE)  
            return Integer.MIN_VALUE;  

        return (int) re; 
    }         
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值