首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何解决DontGiveMeFive-Java?

如何解决DontGiveMeFive-Java?
EN

Stack Overflow用户
提问于 2018-09-29 05:57:11
回答 2查看 0关注 0票数 0

有一个名为codewars的站点具有此DontGiveMeFive问题,您必须在给定范围内给出整数计数,而不计算数字5出现的数字

代码语言:javascript
复制
Examples:

1,9 → 1,2,3,4,6,7,8,9 → Result 8

4,17 → 4,6,7,8,9,10,11,12,13,14,16,17 → Result 12

50,60 → 60 → Result 1

-59,-50 → → Result 0

代码语言:javascript
复制
public class MyClass {
    public static int dontGiveMeFive(int start, int end)
    {
        int temp, i, j, count=0;
        start = Math.abs(start);
        end = Math.abs(end);
        if(start>end)
        {
            temp = end;
            end = start;
            start = temp;
        }
        int num = (end-start)+1;
        for(i=start;i<=end;i++)
        {
            j=i;
            while(j!=0)
            {
                temp = j%10;
                j = j/10;
                if(temp==5)
                {
                    count++;
                    j=0;
                }
            }
        }
        return (num-count);
    }
}
EN

回答 2

Stack Overflow用户

发布于 2018-09-29 14:39:14

使用Java 8 Stream API,它可以非常简单地完成:

代码语言:javascript
复制
public long dontGiveMeFive(int from, int to) {
    return IntStream.rangeClosed(from, to)
        .mapToObj(String::valueOf)
        .filter(n -> !n.contains("5"))
        .count();
}

但是将数字转换为字符串并检查它是否包含5的方法也适用于Java 8之前的解决方案。

还应该注意的是,这种方法处理to小于的情况from,因为IntStream::rangeInclusive照顾该部分。

票数 0
EN

Stack Overflow用户

发布于 2018-09-29 15:20:35

这样试试:

代码语言:javascript
复制
public class MyClass 
{
    public static int dontGiveMeFive(int start, int end)
    {
        assert (start <= end);

        int temp, i, j, count=0;
        int num = (end-start)+1;
        for(i=start;i<=end;i++)
        {
            j=Math.abs(i);
            while(j!=0)
            {
                temp = j%10;
                j = j/10;
                if(temp==5)
                {
                    count++;
                    j=0;
                }
            }
        }
        return (num-count);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档