Realice n pasos para convertir cada dígito de un número en el formato [recuento][dígito]

Dado un número num como una string y un número N. La tarea es escribir un programa que convierta el número dado num en otro número después de realizar N pasos. En cada paso, cada dígito de num se escribirá en el formato [cuenta][dígito] en el nuevo número, donde cuenta es la cantidad de veces que un dígito aparece consecutivamente en num. 

Ejemplos: 

Entrada: núm = “123”; n = 3 
Salida: 1321123113 
Para, n = 1: 123 se convierte en 1 vez 1, 1 vez 2, 1 vez 3, por lo tanto, número 111213 
Para, n = 2: 3 veces 1, 1 vez 2, 1 vez 1, 1 vez 3 , de ahí el número 31121113 
Para, n = 3: 1 vez 3, 2 veces 1, 1 vez 2, 3 veces 1, 1 vez 3, de ahí el número 1321123113 

Entrada: núm = “1213”; n = 1 
Salida: 11121113 

Enfoque: Analice los caracteres de la string como un solo dígito y mantenga un conteo para ese dígito hasta que se encuentre un dígito diferente. Una vez que se encuentra un dígito diferente, agregue el conteo del dígito a la nueva string y el número. Una vez que la string se analice por completo, recurra a la función nuevamente con esta nueva string hasta que se completen n pasos. 

A continuación se muestra la implementación del enfoque anterior:  

C++

// C++ program to convert number
// to the format [count][digit] at every step
#include <bits/stdc++.h>
using namespace std;
 
// Function to perform every step
void countDigits(string st, int n)
{
 
    // perform N steps
    if (n > 0) {
        int cnt = 1, i;
        string st2 = "";
 
        // Traverse in the string
        for (i = 1; i < st.length(); i++) {
            if (st[i] == st[i - 1])
                cnt++;
            else {
                st2 += ('0' + cnt);
                st2 += st[i - 1];
                cnt = 1;
            }
        }
 
        // for last digit
        st2 += ('0' + cnt);
        st2 += st[i - 1];
 
        // recur for current string
        countDigits(st2, --n);
    }
 
    else
        cout << st;
}
 
// Driver Code
int main()
{
 
    string num = "123";
    int n = 3;
 
    countDigits(num, n);
 
    return 0;
}

Java

// Java program to convert number
// to the format [count][digit] at every step
class GFG
{
 
    // Function to perform every step
    public static void countDigits(String st, int n)
    {
 
        // perform N steps
        if (n > 0)
        {
            int cnt = 1, i;
            String st2 = "";
 
            // Traverse in the string
            for (i = 1; i < st.length(); i++)
            {
                if (st.charAt(i) == st.charAt(i - 1))
                    cnt++;
                else
                {
                    st2 += ((char) 0 + (char) cnt);
                    st2 += st.charAt(i - 1);
                    cnt = 1;
                }
            }
 
            // for last digit
            st2 += ((char) 0 + (char) cnt);
            st2 += st.charAt(i - 1);
 
            // recur for current string
            countDigits(st2, --n);
        }
        else
            System.out.print(st);
    }
 
    // Driver Code
    public static void main(String[] args)
    {
        String num = "123";
        int n = 3;
        countDigits(num, n);
    }
}
 
// This code is contributed by
// sanjeev2552

Python3

# Python program to convert number
# to the format [count][digit] at every step
 
# Function to perform every step
def countDigits(st, n):
 
    # perform N steps
    if (n > 0) :
        cnt = 1
        i = 0
        st2 = ""
        i = 1
         
        # Traverse in the string
        while (i < len(st) ) :
            if (st[i] == st[i - 1]):
                cnt = cnt + 1
            else :
                st2 += chr(48 + cnt)
                st2 += st[i - 1]
                cnt = 1
            i = i + 1
 
        # for last digit
        st2 += chr(48 + cnt)
        st2 += st[i - 1]
 
        # recur for current string
        countDigits(st2, n - 1)
        n = n - 1;
 
    else:
        print(st)
 
# Driver Code
 
num = "123"
n = 3
 
countDigits(num, n)
 
# This code is contributed by Arnab Kundu

C#

// C# program to convert number
// to the format [count][digit] at every step
using System;
class GFG
{
 
// Function to perform every step
public static void countDigits(string st, int n)
{
 
    // perform N steps
    if (n > 0)
    {
        int cnt = 1, i;
        string st2 = "";
 
        // Traverse in the string
        for (i = 1; i < st.Length; i++)
        {
            if (st[(i)] == st[(i - 1)])
                cnt++;
            else
            {
                st2 += ((char) 0 + (char) cnt);
                st2 += st[(i - 1)];
                cnt = 1;
            }
        }
 
        // for last digit
        st2 += ((char) 0 + (char) cnt);
        st2 += st[(i - 1)];
 
        // recur for current string
        countDigits(st2, --n);
    }
    else
        Console.Write(st);
}
 
// Driver Code
public static void Main()
{
    string num = "123";
    int n = 3;
    countDigits(num, n);
}
}
 
// This code is contributed by
// Code_Mech.

Javascript

<script>
 
// Javascript program to convert number
// to the format [count][digit] at every step
 
// Function to perform every step
function countDigits(st, n)
{
     
    // Perform N steps
    if (n > 0)
    {
        let cnt = 1, i;
        let st2 = "";
 
        // Traverse in the string
        for(i = 1; i < st.length; i++)
        {
            if (st[i] == st[i - 1])
                cnt++;
            else
            {
                st2 += String.fromCharCode(
                    '0'.charCodeAt() + cnt);
                st2 += st[i - 1];
                cnt = 1;
            }
        }
 
        // For last digit
        st2 += String.fromCharCode(
            '0'.charCodeAt() + cnt);
        st2 += st[i - 1];
 
        // Recur for current string
        countDigits(st2, --n);
    }
    else
        document.write(st);
}
 
// Driver code
let num = "123";
let n = 3;
 
countDigits(num, n);
 
// This code is contributed by decode2207
 
</script>
Producción: 

1321123113

 

Publicación traducida automáticamente

Artículo escrito por rsatish1110 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 *