Divida la string dada en substrings de tamaño K llenando elementos

Dada una string str de longitud N y un entero K , la tarea es dividir la string en K grupos de tamaño y si al último grupo no le quedan K caracteres, entonces se usa un carácter ch para completar el grupo.

Ejemplos:

Entrada: str = “Algoritmos”, K = 3, ch = “@”
Salida: Algoritmo s@@
Explicación:
Los primeros 3 caracteres “alg” forman el primer grupo.
Los siguientes 3 caracteres “ori” forman el segundo grupo.
Los últimos 3 caracteres “thm” forman el tercer grupo.
Para el último grupo, solo existe el carácter ‘s’ de la string. 
Para completar este grupo, agregue ‘@’ dos veces.

Entrada: str = “Algoritmo”, K = 3, ch = “@”
Salida: Algoritmo
Explicación:
Similar al ejemplo anterior, 
los primeros 3 caracteres “alg” forman el primer grupo.
Los siguientes 3 caracteres “ori” forman el segundo grupo.
Los últimos 3 caracteres “thm” forman el tercer grupo.
Dado que todos los grupos pueden llenarse completamente con caracteres de la string, no es necesario usar ch.

 

Enfoque: Este es un problema simple relacionado con la implementación. Siga los pasos que se mencionan a continuación:

  1. Inicialice res como una string vacía.
  2. Comience a atravesar la string y cuando el tamaño de la string res sea igual a K, coloque una string res en el vector de resultados y vacíe la string res nuevamente para una mayor división .
  3. Y por último, si la string res no está vacía y el tamaño no es igual a ka, use el carácter Extra para llenarlo, el último grupo.

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

C++

// C++ code to implement above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to split the string
vector<string> dividestring(string str,
                            int K, char ch)
{
    int N = str.size();
    int j = 0, i = 0;
    vector<string> result;
    string res = "";
    while (j < N) {
        res += str[j];
        if (res.size() == K) {
            result.push_back(res);
            res = "";
        }
        j++;
    }
 
    if (res != "") {
        while (res.size() < K) {
            res += ch;
        }
        result.push_back(res);
    }
    return result;
}
 
// Driver code
int main()
{
 
    string str = "Algorithms";
    int K = 3;
    char ch = '@';
    vector<string> ans
        = dividestring(str, K, ch);
    for (auto i : ans) {
        cout << i << "\n";
    }
    return 0;
}

Java

// Java code to implement above approach
import java.util.ArrayList;
 
class GFG
{
 
  // Function to split the String
  static ArrayList<String> divideString(String str, int K, char ch) {
    int N = str.length();
    int j = 0;
    ArrayList<String> result = new ArrayList<String>();
    String res = "";
    while (j < N) {
      res += str.charAt(j);
      if (res.length() == K) {
        result.add(res);
        res = "";
      }
      j++;
    }
 
    if (res != "") {
      while (res.length() < K) {
        res += ch;
      }
      result.add(res);
    }
    return result;
  }
 
  // Driver code
  public static void main(String args[])
  {
 
    String str = "Algorithms";
    int K = 3;
    char ch = '@';
    ArrayList<String> ans = divideString(str, K, ch);
    for (String i : ans) {
      System.out.println(i);
    }
  }
}
 
// This code is contributed by gfgking.

Python3

# python3 code to implement above approach
 
# Function to split the string
 
 
def dividestring(str, K, ch):
 
    N = len(str)
    j, i = 0, 0
    result = []
    res = ""
    while (j < N):
        res += str[j]
        if (len(res) == K):
            result.append(res)
            res = ""
 
        j += 1
 
    if (res != ""):
        while (len(res) < K):
            res += ch
 
        result.append(res)
 
    return result
 
 
# Driver code
if __name__ == "__main__":
 
    str = "Algorithms"
    K = 3
    ch = '@'
    ans = dividestring(str, K, ch)
    for i in ans:
        print(i)
 
    # This code is contributed by rakeshsahni

C#

// C# code to implement above approach
using System;
using System.Collections.Generic;
class GFG {
 
  // Function to split the string
  static List<string> dividestring(string str, int K,
                                   char ch)
  {
    int N = str.Length;
    int j = 0;
    List<string> result = new List<string>();
    string res = "";
    while (j < N) {
      res += str[j];
      if (res.Length == K) {
        result.Add(res);
        res = "";
      }
      j++;
    }
 
    if (res != "") {
      while (res.Length < K) {
        res += ch;
      }
      result.Add(res);
    }
    return result;
  }
 
  // Driver code
  public static void Main()
  {
 
    string str = "Algorithms";
    int K = 3;
    char ch = '@';
    List<string> ans = new List<string>();
    ans = dividestring(str, K, ch);
    foreach(var i in ans) { Console.WriteLine(i); }
  }
}
 
// This code is contributed by Taranpreet

Javascript

<script>
    // JavaScript code for the above approach
     
    // Function to split the string
    function dividestring(str, K, ch)
    {
        let N = str.length;
        let j = 0, i = 0;
        let result = [];
        let res = "";
        while (j < N)
        {
            res += str[j];
            if (res.length == K)
            {
                result.push(res);
                res = "";
            }
            j++;
        }
 
        if (res != "") {
            while (res.length < K) {
                res += ch;
            }
            result.push(res);
        }
        return result;
    }
 
    // Driver code
    let str = "Algorithms";
    let K = 3;
    let ch = '@';
    let ans
        = dividestring(str, K, ch);
    for (let i of ans) {
        document.write(i + '<br>')
    }
 
     // This code is contributed by Potta Lokesh
</script>
Producción: 

Alg
ori
thm
s@@

 

Complejidad temporal: O(N)
Espacio auxiliar: O(N)

Publicación traducida automáticamente

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