Encuentra el número máximo que se puede formar usando los dígitos de un número dado

Dado un número, escribe un programa para encontrar el número máximo que se puede formar usando todos los dígitos de este número.
Ejemplos: 
 

Input : 38293367
Output : 98763332

Input : 1203465
Output: 6543210

Enfoque simple : el método simple para resolver este problema es extraer y almacenar los dígitos del número dado en una array de enteros y ordenar esta array en orden descendente. Después de ordenar la array, imprima los elementos de la array. 
Complejidad de tiempo : O (N log N), donde N es el número de dígitos en el número dado.
Enfoque eficiente: sabemos que los dígitos de un número oscilarán entre 0 y 9, por lo que la idea es crear una array hash de tamaño 10 y almacenar el recuento de cada dígito en la array hash que aparece en el número. Luego, recorra la array hash del índice 9 al 0 y calcule el número en consecuencia.
A continuación se muestra la implementación del enfoque eficiente anterior: 
 

C++

// CPP program to print the maximum number
// from the set of digits of a given number
#include <bits/stdc++.h>
using namespace std;
 
// Function to print the maximum number
int printMaxNum(int num)
{
    // hashed array to store count of digits
    int count[10] = {0};
 
    // Converting given number to string
    string str = to_string(num);
 
    // Updating the count array
    for (int i=0; i<str.length(); i++)
        count[str[i]-'0']++;
 
    // result is to store the final number
    int result = 0, multiplier = 1;
 
    // Traversing the count array
    // to calculate the maximum number
    for (int i = 0; i <= 9; i++)
    {
        while (count[i] > 0)
        {
            result = result + (i * multiplier);
            count[i]--;
            multiplier = multiplier * 10;
        }
    }
 
    // return the result
    return result;
}
 
// Driver program to test above function
int main()
{
    int num = 38293367;
    cout << printMaxNum(num);
    return 0;
}

Java

// Java program to print the maximum number
// from the set of digits of a given number
public class GFG
{
    // Function to print the maximum number
    static int printMaxNum(int num)
    {
        // hashed array to store count of digits
        int count[] = new int[10];
         
        // Converting given number to string
        String str = Integer.toString(num);
         
        // Updating the count array
        for(int i=0; i < str.length(); i++)
            count[str.charAt(i)-'0']++;
         
        // result is to store the final number
        int result = 0, multiplier = 1;
         
        // Traversing the count array
        // to calculate the maximum number
        for (int i = 0; i <= 9; i++)
        {
            while (count[i] > 0)
            {
                result = result + (i * multiplier);
                count[i]--;
                multiplier = multiplier * 10;
            }
        }
      
        // return the result
        return result;
    }
     
    // Driver program to test above function
    public static void main(String[] args)
    {
        int num = 38293367;
        System.out.println(printMaxNum(num));
    }
}
// This code is contributed by Sumit Ghosh

Python3

# Python program to print the maximum number
# from the set of digits of a given number
 
# Function to print maximum number
def printMaximum(inum):
 
    # Hashed array to store count of digits
    count = [0 for x in range(10)]
 
    # Converting given number to string
    string = str(num)
 
    # Updating the count array
    for i in range(len(string)):
        count[int(string[i])] = count[int(string[i])] +  1
 
    # Result stores final number
    result = 0
    multiplier = 1
 
    # traversing the count array
    # to calculate the maximum number
 
    for i in range(10):
        while count[i] > 0:
            result = result + ( i * multiplier )
            count[i] = count[i] - 1
            multiplier = multiplier * 10
 
    # return the result
    return result
 
# Driver code
num = 38293367
print(printMaximum(num))
 
# This code is contributed by Harshit Agrawal

C#

// C# program to print the maximum number
// from the set of digits of a given number
using System;
 
class GFG
{
 
// Function to print the maximum number
static int printMaxNum(int num)
{
    // hashed array to store
    // count of digits
    int []count = new int[10];
     
    // Converting given number
    // to string
    String str = num.ToString();
     
    // Updating the count array
    for(int i = 0; i < str.Length; i++)
        count[str[i] - '0']++;
     
    // result is to store the
    // final number
    int result = 0, multiplier = 1;
     
    // Traversing the count array
    // to calculate the maximum number
    for (int i = 0; i <= 9; i++)
    {
        while (count[i] > 0)
        {
            result = result + (i * multiplier);
            count[i]--;
            multiplier = multiplier * 10;
        }
    }
 
    // return the result
    return result;
}
 
// Driver Code
public static void Main()
{
    int num = 38293367;
    Console.Write(printMaxNum(num));
}
}
 
// This code is contributed
// by PrinciRaj1992

PHP

<?php
 
// Php program to print the maximum number
// from the set of digits of a given number
 
// Function to print the maximum number
function printMaxNum($num)
{
    // hashed array to store count of digits
    $count = array_fill(0,10, NULL);
  
    // Converting given number to string
    $str = (string)$num;
  
    // Updating the count array
    for ($i=0; $i<strlen($str); $i++)
        $count[ord($str[$i])-ord('0')]++;
  
    // result is to store the final number
    $result = 0;
    $multiplier = 1;
  
    // Traversing the count array
    // to calculate the maximum number
    for ($i = 0; $i <= 9; $i++)
    {
        while ($count[$i] > 0)
        {
            $result = $result + ($i * $multiplier);
            $count[$i]--;
            $multiplier = $multiplier * 10;
        }
    }
  
    // return the result
    return $result;
}
  
// Driver program to test above function
 
    $num = 38293367;
    echo printMaxNum($num);
?>

Javascript

<script>
// Javascript program to print the maximum number
// from the set of digits of a given number
     
    // Function to print the maximum number
    function printMaxNum(num)
    {
        // hashed array to store count of digits
        let count = new Array(10);
        for(let i=0;i<count.length;i++)
        {
            count[i]=0;
        }
         
        // Converting given number to string
        let str = num.toString();
           
        // Updating the count array
        for(let i=0; i < str.length; i++)
            count[str[i]-'0']++;
           
        // result is to store the final number
        let result = 0, multiplier = 1;
           
        // Traversing the count array
        // to calculate the maximum number
        for (let i = 0; i <= 9; i++)
        {
            while (count[i] > 0)
            {
                result = result + (i * multiplier);
                count[i]--;
                multiplier = multiplier * 10;
            }
        }
        
        // return the result
        return result;
    }
     
    // Driver program to test above function
    let num = 38293367;
    document.write(printMaxNum(num));
     
    //This code is contributed by avanitrachhadiya2155
     
</script>

Producción: 
 

98763332

Complejidad de tiempo: O( N ), donde N es el número de dígitos en el número dado. 

Espacio Auxiliar : O(1)

Nota : para números muy grandes, podemos usar strings para tomar la entrada en lugar de almacenar la entrada en un tipo de datos entero.
 

Este artículo es una contribución de Rohit Thapliyal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *