假设这意味着两个连续的数字不能相同。 如果这意味着所有数字都是唯一的,那么逻辑也非常相似。
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
class solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int no = scan.nextInt();
int count = 0;
for(int i=1;i<=no;i++)
{
String a = Integer.toString(i);
char[] b =a.toCharArray();
Arrays.sort(b);
String x = new String(b);
// System.out.println("Sorted array:"+x);
int flag = 0;
if(a.length()>1)
{
for(int j=1;j<a.length();j++)
{
//System.out.println(b[j-1]+"=="+b[j]);
if( (b[j-1]==b[j]))
{
flag =1;
// System.out.println("Has Repeated Numbers!");
break;
}
}
}
if(flag == 0)
{
count++;
// System.out.println("count:"+count+" --> "+"No:"+a);
}
}
System.out.println("Final Count:"+count);
}
}
输入 1:3456
输出 1:2562
输入 2:22
输出 2:20
输入 3:7
输出 3:7
输入 4:100
输出 4:90
输入 5: 37
输出 5: 34
我的代码满足从 2 到 5 的输入测试用例,但不满足输入 1。 我知道每个数字在数字中都应该是唯一的。谁能说出我在输入 1 的代码中的逻辑错误在哪里?
最佳答案
使用正则表达式!
int count = IntStream.rangeClosed(1, n)
.mapToObj(Integer::toString)
.filter(s -> s.matches("(?!.*?(.)\\1).*"))
.count();
关于java - 给定一个数字,返回从 1 开始到该数字不重复的数字的个数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43440240/