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 1321123113Entrada: 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>
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