热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

下一个数字不同的数字

下一个数字不同的数字原文:https://www.geesf

下一个数字不同的数字

原文:https://www . geesforgeks . org/next-number-with-distinct-digits/

给定一个整数 N ,任务是找到下一个数字,其中有不同的数字。

示例:

输入: N = 20
输出:21
20 后所有不同数字的下一个整数是 21。

输入:N = 2019
T3】输出: 2031

进场:


  1. 使用本文中讨论的方法计算数字 N 中的总位数。

  2. 计算 N 中不同数字的总数。

  3. 如果总位数和 N 中不同位数的计数相等,则返回该数,否则将该数增加 1,并重复前面的步骤。

下面是上述方法的实现:

C++

// C++ program to find next consecutive
// Number with all distinct digits
#include
using namespace std;
// Function to count distinct
// digits in a number
int countDistinct(int n)
{
    // To count the occurrence of digits
    // in number from 0 to 9
    int arr[10] = { 0 };
    int count = 0;
    // Iterate over the digits of the number
    // Flag those digits as found in the array
    while (n) {
        int r = n % 10;
        arr[r] = 1;
        n /= 10;
    }
    // Traverse the array arr and count the
    // distinct digits in the array
    for (int i = 0; i <10; i++) {
        if (arr[i])
            count++;
    }
    return count;
}
// Function to return the total number
// of digits in the number
int countDigit(int n)
{
    int c = 0;
    // Iterate over the digits of the number
    while (n) {
        int r = n % 10;
        c++;
        n /= 10;
    }
    return c;
}
// Function to return the next
// number with distinct digits
int nextNumberDistinctDigit(int n)
{
    while (n         // Count the distinct digits in N + 1
        int distinct_digits = countDistinct(n + 1);
        // Count the total number of digits in N + 1
        int total_digits = countDigit(n + 1);
        if (distinct_digits == total_digits) {
            // Return the next consecutive number
            return n + 1;
        }
        else
            // Increment Number by 1
            n++;
    }
    return -1;
}
// Driver code
int main()
{
    int n = 2019;
    cout <    return 0;
}

Java 语言(一种计算机语言,尤用于创建网站)

// Java program to find next consecutive
// Number with all distinct digits
class GFG
{
    final static int INT_MAX = Integer.MAX_VALUE ;
    // Function to count distinct
    // digits in a number
    static int countDistinct(int n)
    {
        // To count the occurrence of digits
        // in number from 0 to 9
        int arr[] = new int[10];
        int count = 0;
        // Iterate over the digits of the number
        // Flag those digits as found in the array
        while (n != 0)
        {
            int r = n % 10;
            arr[r] = 1;
            n /= 10;
        }
        // Traverse the array arr and count the
        // distinct digits in the array
        for (int i = 0; i <10; i++)
        {
            if (arr[i] != 0)
                count++;
        }
        return count;
    }
    // Function to return the total number
    // of digits in the number
    static int countDigit(int n)
    {
        int c = 0;
        // Iterate over the digits of the number
        while (n != 0)
        {
            int r = n % 10;
            c++;
            n /= 10;
        }
        return c;
    }
    // Function to return the next
    // number with distinct digits
    static int nextNumberDistinctDigit(int n)
    {
        while (n         {
            // Count the distinct digits in N + 1
            int distinct_digits = countDistinct(n + 1);
            // Count the total number of digits in N + 1
            int total_digits = countDigit(n + 1);
            if (distinct_digits == total_digits)
            {
                // Return the next consecutive number
                return n + 1;
            }
            else
                // Increment Number by 1
                n++;
        }
        return -1;
    }
    // Driver code
    public static void main (String[] args)
    {
        int n = 2019;
        System.out.println(nextNumberDistinctDigit(n));
    }
}
// This code is contributed by AnkitRai01

Python 3

# Python3 program to find next consecutive
# Number with all distinct digits
import sys
INT_MAX = sys.maxsize;
# Function to count distinct
# digits in a number
def countDistinct(n):
    # To count the occurrence of digits
    # in number from 0 to 9
    arr = [0] * 10;
    count = 0;
    # Iterate over the digits of the number
    # Flag those digits as found in the array
    while (n != 0):
        r = int(n % 10);
        arr[r] = 1;
        n //= 10;
    # Traverse the array arr and count the
    # distinct digits in the array
    for i in range(10):
        if (arr[i] != 0):
            count += 1;
    return count;
# Function to return the total number
# of digits in the number
def countDigit(n):
    c = 0;
    # Iterate over the digits of the number
    while (n != 0):
        r = n % 10;
        c+=1;
        n //= 10;
    return c;
# Function to return the next
# number with distinct digits
def nextNumberDistinctDigit(n):
    while (n         # Count the distinct digits in N + 1
        distinct_digits = countDistinct(n + 1);
        # Count the total number of digits in N + 1
        total_digits = countDigit(n + 1);
        if (distinct_digits == total_digits):
            # Return the next consecutive number
            return n + 1;
        else:
            # Increment Number by 1
            n += 1;
    return -1;
# Driver code
if __name__ == '__main__':
    n = 2019;
    print(nextNumberDistinctDigit(n));
# This code is contributed by PrinciRaj1992

C

// C# program to find next consecutive
// Number with all distinct digits
using System;
class GFG
{
    readonly static int INT_MAX = int.MaxValue ;
    // Function to count distinct
    // digits in a number
    static int countDistinct(int n)
    {
        // To count the occurrence of digits
        // in number from 0 to 9
        int []arr = new int[10];
        int count = 0;
        // Iterate over the digits of the number
        // Flag those digits as found in the array
        while (n != 0)
        {
            int r = n % 10;
            arr[r] = 1;
            n /= 10;
        }
        // Traverse the array arr and count the
        // distinct digits in the array
        for (int i = 0; i <10; i++)
        {
            if (arr[i] != 0)
                count++;
        }
        return count;
    }
    // Function to return the total number
    // of digits in the number
    static int countDigit(int n)
    {
        int c = 0;
        // Iterate over the digits of the number
        while (n != 0)
        {
            int r = n % 10;
            c++;
            n /= 10;
        }
        return c;
    }
    // Function to return the next
    // number with distinct digits
    static int nextNumberDistinctDigit(int n)
    {
        while (n         {
            // Count the distinct digits in N + 1
            int distinct_digits = countDistinct(n + 1);
            // Count the total number of digits in N + 1
            int total_digits = countDigit(n + 1);
            if (distinct_digits == total_digits)
            {
                // Return the next consecutive number
                return n + 1;
            }
            else
                // Increment Number by 1
                n++;
        }
        return -1;
    }
    // Driver code
    public static void Main(String[] args)
    {
        int n = 2019;
        Console.WriteLine(nextNumberDistinctDigit(n));
    }
}
// This code is contributed by PrinciRaj1992

java 描述语言


Output

2031

另一种方法:

我们可以使用 set STL 来检查一个数字是否只有唯一的数字,而不是每次都计算数字的数量。

然后我们可以比较由给定数字和新创建的集合形成的字符串的大小。

例如,让我们考虑数字 1987,然后我们可以将该数字转换为字符串,

C++

int n;
cin>>n;
string s = to_string(n);

之后,用字符串 s 的内容初始化一个集合。

C++

set uniDigits(s.begin(), s.end());

然后我们可以比较字符串 s 的大小和新创建的一组单音数字。

这是总代码

C++

// CPP program for the above program
#include
using namespace std;
// Function to find next number
// with digit distinct
void nextNumberDistinctDigit(int n)
{
    // Iterate from n + 1 to inf
    for (int i = n + 1;; i++) {
        // Convert the no. to
        // string
        string s = to_string(i);
        // Convert string to set using stl
        set uniDigits(s.begin(), s.end());
        // Output if condition satisfies
        if (s.size() == uniDigits.size()) {
            cout <            break;
        }
    }
}
// Driver Code
int main()
{
    int n = 2019; // input the no.
    // Function Call
    nextNumberDistinctDigit(n);
    return 0;
}

Output

2031

推荐阅读
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • Python 工具推荐 | PyHubWeekly 第二十一期:提升命令行体验的五大工具
    本期 PyHubWeekly 为大家精选了 GitHub 上五个优秀的 Python 工具,涵盖金融数据可视化、终端美化、国际化支持、图像增强和远程 Shell 环境配置。欢迎关注并参与项目。 ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 本文详细介绍了Java库XChart中的XYSeries类下的setLineColor()方法,并提供了多个实际应用场景的代码示例。 ... [详细]
  • 本文探讨了如何通过一系列技术手段提升Spring Boot项目的并发处理能力,解决生产环境中因慢请求导致的系统性能下降问题。 ... [详细]
  • CSS高级技巧:动态高亮当前页面导航
    本文介绍了如何使用CSS实现网站导航栏中当前页面的高亮显示,提升用户体验。通过为每个页面的body元素添加特定ID,并结合导航项的类名,可以轻松实现这一功能。 ... [详细]
  • 本文介绍两道有趣的编程问题:一是寻找给定数字n的连续数字序列及其个数,二是模拟一个翻杯子的游戏。同时附带一道智商题供读者思考。 ... [详细]
  • 本文介绍了 Python 的 Pmagick 库中用于图像处理的木炭滤镜方法,探讨其功能和用法,并通过实例演示如何应用该方法。 ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • KMP算法是处理字符串匹配的一种高效算法它首先用O(m)的时间对模板进行预处理,然后用O(n)的时间完成匹配。从渐进的意义上说,这样时间复 ... [详细]
  • 本文介绍了一个经典的算法问题——活动选择问题,来源于牛客网的比赛题目。该问题要求从一系列活动集合中选出最多数量的相容活动,确保这些活动的时间段不重叠。 ... [详细]
author-avatar
elgin2010
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有