Eliminar dígitos repetidos en un número dado

Dado un número entero, elimine los dígitos repetidos consecutivos de él.

Ejemplos: 

Input: x = 12224
Output: 124

Input: x = 124422
Output: 1242

Input: x = 11332
Output: 132

Necesitamos procesar todos los dígitos de n y eliminar las representaciones consecutivas. Podemos recorrer todos los dígitos dividiendo repetidamente n entre 10 y tomando n%10. 

C++

// C++ program to remove repeated digits
#include <iostream>
using namespace std;
 
long int removeRecur(long int n)
{
    // Store first digits as previous digit
    int prev_digit = n % 10;
 
    // Initialize power
    long int pow = 10;
    long int res = prev_digit;
 
    // Iterate through all digits of n, note that
    // the digits are processed from least significant
    // digit to most significant digit.
    while (n) {
        // Store current digit
        int curr_digit = n % 10;
 
        if (curr_digit != prev_digit) {
            // Add the current digit to the beginning
            // of result
            res += curr_digit * pow;
 
            // Update previous result and power
            prev_digit = curr_digit;
            pow *= 10;
        }
 
        // Remove last digit from n
        n = n / 10;
    }
 
    return res;
}
 
// Driver program
int main()
{
    long int n = 12224;
    cout << removeRecur(n);
    return 0;
}

Java

// Java program to remove repeated digits
import java.io.*;
 
class GFG {
 
    static long removeRecur(long n)
    {
         
        // Store first digits as previous
        // digit
        long prev_digit = n % 10;
     
        // Initialize power
        long pow = 10;
        long res = prev_digit;
     
        // Iterate through all digits of n,
        // note that the digits are
        // processed from least significant
        // digit to most significant digit.
        while (n>0) {
             
            // Store current digit
            long curr_digit = n % 10;
     
            if (curr_digit != prev_digit)
            {
                // Add the current digit to
                // the beginning of result
                res += curr_digit * pow;
     
                // Update previous result
                // and power
                prev_digit = curr_digit;
                pow *= 10;
            }
     
            // Remove last digit from n
            n = n / 10;
        }
     
        return res;
    }
     
    // Driver program
    public static void main (String[] args)
    {
        long n = 12224;
         
        System.out.println(removeRecur(n));
    }
}
 
// This code is contributed by anuj_67.

Python3

# Python 3 program to remove repeated digits
 
def removeRecur(n):
     
    # Store first digits as previous digit
    prev_digit = n % 10
 
    # Initialize power
    pow = 10
    res = prev_digit
 
    # Iterate through all digits of n, note
    # that the digits are processed from
    # least significant digit to most
    # significant digit.
    while (n):
         
        # Store current digit
        curr_digit = n % 10
 
        if (curr_digit != prev_digit):
             
            # Add the current digit to the
            # beginning of result
            res += curr_digit * pow
 
            # Update previous result and power
            prev_digit = curr_digit
            pow *= 10
 
        # Remove last digit from n
        n = int(n / 10)
     
    return res
 
# Driver Code
if __name__ == '__main__':
    n = 12224
    print(removeRecur(n))
 
# This code is contributed by
# Surendra_Gangwar

C#

// C# program to remove repeated digits
using System;
 
class GFG {
 
    static long removeRecur(long n)
    {
         
        // Store first digits as previous
        // digit
        long prev_digit = n % 10;
     
        // Initialize power
        long pow = 10;
        long res = prev_digit;
     
        // Iterate through all digits of n,
        // note that the digits are
        // processed from least significant
        // digit to most significant digit.
        while (n > 0) {
             
            // Store current digit
            long curr_digit = n % 10;
     
            if (curr_digit != prev_digit)
            {
                // Add the current digit to
                // the beginning of result
                res += curr_digit * pow;
     
                // Update previous result
                // and power
                prev_digit = curr_digit;
                pow *= 10;
            }
     
            // Remove last digit from n
            n = n / 10;
        }
     
        return res;
    }
     
    // Driver program
    public static void Main ()
    {
        long n = 12224;
         
        Console.WriteLine(removeRecur(n));
    }
}
 
// This code is contributed by anuj_67.

PHP

<?php
// PHP program to remove
// repeated digits
 
function removeRecur($n)
{
     
    // Store first digits
    // as previous digit
    $prev_digit = $n % 10;
 
    // Initialize power
    $pow = 10;
    $res = $prev_digit;
 
    // Iterate through all digits
    // of n, note that the digits
    // are processed from least
    // significant digit to most
    // significant digit.
    while ($n)
    {
         
        // Store current digit
        $curr_digit = $n%10;
 
        if ($curr_digit != $prev_digit)
        {
            // Add the current digit
            // to the beginning of
            // result
            $res += $curr_digit * $pow;
     
            // Update previous result
            // and power
            $prev_digit = $curr_digit;
            $pow *= 10;
        }
 
        // Remove last digit
        // from n
        $n = $n / 10;
    }
 
    return $res;
}
 
    // Driver Code
    $n = 12224;
    echo removeRecur($n);
     
// This code is contributed by ajit.
?>

Javascript

<script>
 
    // Javascript program to
    // remove repeated digits
     
    function removeRecur(n)
    {
           
        // Store first digits as previous
        // digit
        let prev_digit = n % 10;
       
        // Initialize power
        let pow = 10;
        let res = prev_digit;
       
        // Iterate through all digits of n,
        // note that the digits are
        // processed from least significant
        // digit to most significant digit.
        while (n > 0) {
               
            // Store current digit
            let curr_digit = n % 10;
       
            if (curr_digit != prev_digit)
            {
                // Add the current digit to
                // the beginning of result
                res += curr_digit * pow;
       
                // Update previous result
                // and power
                prev_digit = curr_digit;
                pow *= 10;
            }
       
            // Remove last digit from n
            n = parseInt(n / 10, 10);
        }
       
        return res;
    }
     
    let n = 12224;
           
      document.write(removeRecur(n));
     
</script>
Producción

124

Complejidad temporal: O(log 10 n)
Espacio auxiliar: O(1)

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 *