Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 给定一个数字,返回具有非重复数字的数字的计数,直到该数字从1开始?_Java_Algorithm - Fatal编程技术网

Java 给定一个数字,返回具有非重复数字的数字的计数,直到该数字从1开始?

Java 给定一个数字,返回具有非重复数字的数字的计数,直到该数字从1开始?,java,algorithm,Java,Algorithm,假设这意味着两个连续的数字不可能是相同的。 如果这意味着所有数字都是唯一的,那么逻辑也非常相似 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(S

假设这意味着两个连续的数字不可能是相同的。 如果这意味着所有数字都是唯一的,那么逻辑也非常相似

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);
   }
}
import java.io.*;
导入java.util.*;
导入java.text.*;
导入java.math.*;
导入java.util.regex.*;
类解决方案{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
int no=scan.nextInt();
整数计数=0;
对于(int i=1;i1)
{

对于(int j=1;j我的逻辑中出现的错误是,这里我假设没有两个数字可以是相同的,但是仔细观察问题陈述它表明没有两个连续的数字不能是相同的

以下是上述输入测试用例的工作代码。感谢Paul Hankin的指出

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();
          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(count);
   }
}
import java.io.*;
导入java.util.*;
导入java.text.*;
导入java.math.*;
导入java.util.regex.*;
类解决方案{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
int no=scan.nextInt();
整数计数=0;
对于(int i=1;i1)
{
对于(int j=1;j使用正则表达式

int count = IntStream.rangeClosed(1, n)
    .mapToObj(Integer::toString)
    .filter(s -> s.matches("(?!.*?(.)\\1).*"))
    .count();

这仍然是你可以/应该学会自己调试的东西,但是这个新手问题比我今天看到的大多数其他问题都要好得多,所以你得到了我的投票。
String a
char[]
数组是for循环的局部数组。考虑到字符串是不可变的,您可能需要重新考虑它。您可以改用StringBuilder,所以像707这样的数字也不应该被计算?此时,您的代码将被计算为707,对吗?据我所知,它不应该被计算为7(重复两次)在给定的数字707中。@Nickziebert您写下“假设这意味着两个连续数字不能相同”。但您的回答和评论在此假设这意味着没有两个数字可以相同。请看哪一个测试用例相同,我显示“没有两个连续数字”的解释确实正确。我想您的意思是,没有两个连续数字可以相同(在“can”和“be”之间没有“not”)