为了账号安全,请及时绑定邮箱和手机立即绑定

新手关于leetcode 8的问题,charAt()的问题,已经卡了一晚上了 求解

新手关于leetcode 8的问题,charAt()的问题,已经卡了一晚上了 求解

慕娘9325324 2018-09-12 09:15:40
目的是实现将string转换成integer,如果输入+99,则输出为99,;如果输入-99,则输出为-99,且考虑溢出。public class Solution {我的代码如上图,为什么我输入+1100这种格式的数字后,输出仍旧是0?小弟新手刷lc,这道题已经卡了一晚上了,求解
查看完整描述

1 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

for (int i = 0; i < newstr.length(); i++)应该改成for (int i = 1; i < newstr.length(); i++), 因为按照你的描述,下标为0的字符应该是+或者-

public class Solution {

    public int atoi(String str) {

        if (str == null || str.length() <= 0)

            return 0;


        long rs = 0;

        char[] chArr = str.trim().toCharArray();

        boolean isPositive = chArr[0] == '+' || Character.isDigit(chArr[0]);

        int start = Character.isDigit(chArr[0]) ? 0 : 1;

        for (; start < chArr.length; start++) {

            if (Character.isDigit(chArr[start]))

                rs = rs * 10 + (chArr[start] - '0');

        }

        rs = isPositive ? rs : -rs;

        if (isPositive)

            return rs > Integer.MAX_VALUE ? Integer.MAX_VALUE : (int) rs;

        else

            return rs < Integer.MIN_VALUE ? Integer.MIN_VALUE : (int) rs;

    }


    public static void main(String[] args) {

        System.out.println(new Solution().atoi("-1100"));

    }

}


查看完整回答
反对 回复 2018-10-30
  • 1 回答
  • 0 关注
  • 1143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信