Genere una string después de agregar espacios en posiciones específicas en una String dada

Dada una string s y una array de espacios [] que describen los índices de la string original donde se agregarán espacios. La tarea es agregar espacios en posiciones dadas en espacios [] e imprimir la string formada.

Ejemplos:

Entrada: s = “GeeksForGeeK”, espacios = {1, 5, 10}
Salida: “G eeks ForGe eK”
Explicación: Los caracteres subrayados en “G e eks F orGe e K” se relacionan con los índices 1, 5 y 10 Después de eso, ponga espacios delante de esos caracteres.

Entrada: s = «ilovegeeksforgeek», espacios = {1, 5, 10, 13}
Salida: «me encantan los geeks por geek»

 

Enfoque n. ° 1: este problema se basa en la implementación de strings simples. Siga los pasos a continuación para resolver el problema dado. 

  • Inicialice con un espacio en la nueva string de tamaño de la suma de la longitud de ambas arrays.
  • Visite el índice y donde sea que el índice sea igual al valor del espacio actual en la array space[] , sáltelo ya que el espacio ya está allí.
  • De lo contrario, siga asignando el valor de la string principal
  • Aquí la adición de ‘l’ en la línea { if(l<N and i==sp[l]+l) } es muy interesante de observar:
    • Los valores en la array espacial están básicamente de acuerdo con la string de entrada anterior.
    • Pero en la nueva string, estos valores de espacio o índices básicamente se desplazan según la cantidad de espacios encontrados antes.
  • Imprime la string formada al final.

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

C++

// C++ program for above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to add space in required positions
string spaceintegration(string s, vector<int>& sp)
{
    int M = s.size(), N = sp.size(), l = 0, r = 0;
 
    string res(M + N, ' ');
 
    // Iterate over M+N length
    for (int i = 0; i < M + N; i++) {
 
        if (l < N and i == sp[l] + l)
            l++;
        else
            res[i] = s[r++];
    }
 
    // Return the required string
    return res;
}
 
// Driver Code
int main()
{
 
    string s = "ilovegeeksforgeeks";
 
    vector<int> space = { 1, 5, 10, 13 };
 
    // Function Call
    cout << spaceintegration(s, space) << endl;
 
    return 0;
}

Java

// Java program for above approach
import java.util.*;
class GFG
{
 
  // Function to add space in required positions
  static String spaceintegration(String s, int []sp)
  {
    int M = s.length(), N = sp.length, l = 0, r = 0;
    String res = newstr(M + N, ' ');
 
    // Iterate over M+N length
    for (int i = 0; i < M + N; i++) {
 
      if (l < N && i == sp[l] + l)
        l++;
      else
        res = res.substring(0,i)+s.charAt(r++)+res.substring(i+1);
    }
 
    // Return the required String
    return res;
  }
 
  static String newstr(int i, char c) {
    String str = "";
    for (int j = 0; j < i; j++) {
      str+=c;       
    }
    return str;
  }
 
  // Driver Code
  public static void main(String[] args)
  {
    String s = "ilovegeeksforgeeks";
    int[] space = { 1, 5, 10, 13 };
 
    // Function Call
    System.out.print(spaceintegration(s, space) +"\n");
 
  }
}
 
// This code contributed by shikhasingrajput

Python3

# Python3 program for above approach
 
# Function to add space in required positions
def spaceintegration(s, sp):
     
    M = len(s)
    N = len(sp)
    l = 0
    r = 0
 
    res = [' '] * (M + N)
 
    # Iterate over M+N length
    for i in range(M + N):
        if (l < N and i == sp[l] + l):
            l += 1
        else:
            res[i] = s[r]
            r += 1
 
    # Return the required string
    return ''.join(res)
 
# Driver Code
if __name__ == "__main__":
 
    s = "ilovegeeksforgeeks"
 
    space = [ 1, 5, 10, 13 ]
 
    # Function Call
    print(spaceintegration(s, space))
 
# This code is contributed by ukasp

C#

// C# program for above approach
using System;
class GFG
{
 
  // Function to add space in required positions
  static String spaceintegration(String s, int []sp)
  {
    int M = s.Length, N = sp.Length, l = 0, r = 0;
    String res = newstr(M + N, ' ');
 
    // Iterate over M+N length
    for (int i = 0; i < M + N; i++) {
 
      if (l < N && i == sp[l] + l)
        l++;
      else
        res = res.Substring(0,i)+s[r++]+res.Substring(i+1);
    }
 
    // Return the required String
    return res;
  }
 
  static String newstr(int i, char c) {
    String str = "";
    for (int j = 0; j < i; j++) {
      str+=c;       
    }
    return str;
  }
 
  // Driver Code
  public static void Main()
  {
    String s = "ilovegeeksforgeeks";
    int[] space = { 1, 5, 10, 13 };
 
    // Function Call
    Console.Write(spaceintegration(s, space) +"\n");
 
  }
}
 
// This code is contributed by Saurabh Jaiswal

Javascript

<script>
      // JavaScript code for the above approach
 
      // Function to add space in required positions
      function spaceintegration(s, sp)
      {
          let M = s.length, N = sp.length, l = 0, r = 0;
          let res = new Array(M + N).fill(' ');
 
          // Iterate over M+N length
          for (let i = 0; i < M + N; i++) {
 
              if (l < N && i == sp[l] + l)
                  l++;
              else
                  res[i] = s[r++];
          }
 
          // Return the required string
          return res.join('');
      }
 
      // Driver Code
      let s = "ilovegeeksforgeeks";
      let space = [1, 5, 10, 13];
 
      // Function Call
      document.write(spaceintegration(s, space) + '<br>');
 
// This code is contributed by Potta Lokesh
  </script>
Producción

i love geeks for geeks

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

Enfoque n.º 2: este problema se puede resolver mediante el método que usamos para insertar un elemento en una posición específica en la array. Siga los pasos a continuación para resolver el problema dado. 

  • Tenemos la string s y la posición en el espacio vectorial
  • Itere sobre el elemento del espacio From last of vector to first y siga los siguientes pasos para cada elemento de vector . Sea L elemento del vector.
    • Agregue un espacio al final de s.
    • Iterar sobre la string hasta la L: 
      • Mueva el carácter uno a uno hacia adelante hasta L .
    • Por último, agregue espacio en L.
  • Imprimir string al final.

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

C++

// C++ program for above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to add space in required positions
string spaceintegration(string s, vector<int>& space)
{
    int y = 0;
    int len = space.size();
 
    while (len--) {
        int k = space[len] + 1;
        int l = s.size() - 1;
        string tem = " ";
        s += tem;
        //   iterate over string
        for (int i = l; i >= k - 1; i--) {
            s[i + 1] = s[i];
        }
        s[k - 1] = tem[0];
        y += 1;
    }
    return s;
}
 
// Driver code
int main()
{
 
    string s = "ilovegeeksforgeeks";
    vector<int> space = { 1, 5, 10, 13 };
 
    //   Function call
    cout << spaceintegration(s, space) << endl;
 
    return 0;
}

Python

# Python3 program for above approach
 
# Function to add space in required positions
 
 
def spaceintegration(se, space):
    s = list(se)
    # Iterate over the string
    for i in range(len(space)-1, -1, -1):
        s.insert(space[i], " ")
 
    return "".join(s)
 
 
# Driver Code
if __name__ == "__main__":
 
    s = "ilovegeeksforgeeks"
 
    space = [1, 5, 10, 13]
 
    # Function Call
    print(spaceintegration(s, space))
 
# This code is contributed by ukasp

C#

// C# program to implement above approach
using System;
using System.Collections;
using System.Collections.Generic;
 
class GFG
{
 
    // Function to add space in required positions
    static string spaceintegration(string s, List<int> space)
    {
        int y = 0;
        int len = space.Count;
 
        while (len > 0) {
            len -= 1;
            int k = space[len] + 1;
            int l = s.Length - 1;
            string tem = " ";
            s += tem;
 
            // iterate over string
            for (int i = l - 1 ; i >= k - 1 ; i--) {
                  // Replaces s[i + 1] with s[i]
                s = s.Remove(i + 1, 1);
                s = s.Insert(i + 1, Char.ToString(s[i]));
            }
              // Replaces s[k - 1] with tem[0]
            s = s.Remove(k - 1, 1);
            s = s.Insert(k - 1, Char.ToString(tem[0]));
            y += 1;
        }
        return s;
    }
 
    // Driver code
    public static void Main(string[] args){
 
        string s = "ilovegeeksforgeeks";
        List<int> space = new List<int>{ 1, 5, 10, 13 };
 
        // Function call
        Console.WriteLine(spaceintegration(s, space));
 
    }
}
 
// This code is contributed by subhamgoyal2014.

Javascript

// JavaScript code for the above approach
 
        // Function to add space in required positions
        function spaceintegration(s, sp)
        {
           s = s.split('')
        //   iterate over the space
           for(let i = sp.length-1; i>=0; i--){
               s.splice(sp[i], 0, " ");
           }
 
            // Return the required string
            return s.join('');
        }
 
        // Driver Code
        let s = "ilovegeeksforgeeks";
        let space = [1, 5, 10, 13];
 
        // Function Call
        console.log(spaceintegration(s,space));
 
  // This code is contributed by Sam snehil
Producción

i love geeks for geeks

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 *