gpt4 book ai didi

java - 通过 lambda 表达式找到第一个具有最不同数字的

转载 作者:行者123 更新时间:2023-12-03 19:00:52 25 4
gpt4 key购买 nike

目前,我正在学习在同一个 lambda 表达式中使用 distinct() 的功能:
第一个用于查找整数的不同数字

Integer intVar = 12341234;
long c1 = intVar.toString().chars().distinct().count(); // (1,2,3,4)
System.out.println(c1);//result = 4
然后我想尝试在一个范围内找到相同的东西,
我的想法是:
1.loop from 1 to 1_000_000
2.filter isSquareNumber && <= 9_999_999 && 1_000_000
3.convert to char
4.distinct
5.store as list(key,value)
6.findfirst key with value=7
因为原始代码有效但看起来很糟糕
int inte = IntStream.iterate(1, i-> i + 1)
.filter(i->isSquareNumber(i) && i<= 9999999 && i>=1000000)
.filter(i-> i%10!=i/10%10 && i%10!=i/100%10 && i%10!=i/1000%10 && i%10!=i/10000%10 && i%10!=i/100000%10 && i%10!=i/1000000%10)
.filter(i-> i/10%10!=i/100%10 && i/10%10!=i/1000%10 && i/10%10!=i/10000%10 && i/10%10!=i/100000%10 && i/10%10!=i/1000000%10)
.filter(i-> i/100%10!=i/1000%10 && i/100%10!=i/10000%10 && i/100%10!=i/100000%10 && i/100%10!=i/1000000%10)
.filter(i-> i/1000%10!=i/10000%10 && i/1000%10!=i/100000%10 && i/1000%10!=i/1000000%10)
.filter(i-> i/10000%10!=i/10%10 && i/10000%10!=i/100000%10)
.filter(i-> i/100000%10!=i/1000000%10)
.findFirst()
.getAsInt();
System.out.println(inte);//result = 1034289
WJS帮助版
IntStream
.iterate(1, i-> i + 1)
.filter(i->isSquareNumber(i) && i<= 9999999 && i>=1000000)
.mapToObj(i->new String[] {Integer.toString(i), Arrays
.stream(Integer.toString(i).split(""))
.filter(a -> a[1].length() >= 7)
.findFirst()
.ifPresent(a -> System.out
.println(a[1] + " --> " + a[1].length()));
它工作得很好。现在我试图再做一个步骤,创建一个方法,其中返回类型是一个整数并返回最不同的数字整数,但不是 boolean 值。

最佳答案

尝试这个。我将其限制为前 10 个值。

  • mapToObj 创建一个字符串数组。
  • 第一项是原始值。
  • 下一个拆分字符串,消除重复项并重新加入新字符串
  • IntStream.range(100000, 1000000).limit(10)
    .mapToObj(i->new String[] {Integer.toString(i), Arrays
    .stream(Integer.toString(i).split(""))
    .distinct().collect(Collectors.joining(""))})
    .forEach(a->System.out.println(a[0] + " --> " + a[1]));
    打印
    100000 --> 10
    100001 --> 10
    100002 --> 102
    100003 --> 103
    100004 --> 104
    100005 --> 105
    100006 --> 106
    100007 --> 107
    100008 --> 108
    100009 --> 109
    找出第一个有 7 个不同数字的数字。
    在上一个示例中创建数组后,将 forEach 替换为过滤器,然后是 findFirst,然后打印值(如果存在)。
    IntStream.range(1000000, 10000000)
    .mapToObj(i -> new String[] { Integer.toString(i),
    Arrays.stream(Integer.toString(i).split(""))
    .distinct()
    .collect(Collectors.joining("")) })
    .filter(a -> a[1].length() >= 7).findFirst()
    .ifPresent(a -> System.out
    .println(a[1] + " --> " + a[1].length()));
    打印
    1023456 --> 7

    关于java - 通过 lambda 表达式找到第一个具有最不同数字的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64885759/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com