Patrón inverso de substring

Dada la string str , la tarea es imprimir el patrón dado en los ejemplos a continuación:

Ejemplos:  

Entrada: str = “geeks” 
Salida: 
geeks 
*kee* 
**e** 
El reverso de “geeks” es “skeeg” 
Reemplace el primer y último carácter con ‘*’, es decir, *kee* 
Reemplace el segundo y el penúltimo carácter en la string modificada, es decir, **e** 
y así sucesivamente.

Entrada: str = “primero” 
Salida: 
primero 
*sri* 
**r** 

Acercarse: 

  • Imprime la string sin modificar.
  • Invierta la string e inicialice i = 0 y j = n – 1 .
  • Reemplace s[i] = ‘*’ y s[j] = ‘*’ y actualice i = i + 1 y j = j – 1 y luego imprima la string modificada.
  • Repita los pasos anteriores mientras j – i > 1 .

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

C++

// C++ program to print the required pattern
#include <bits/stdc++.h>
using namespace std;
 
// Function to print the required pattern
void printPattern(char s[], int n)
{
 
    // Print the unmodified string
    cout << s << "\n";
 
    // Reverse the string
    int i = 0, j = n - 2;
    while (i < j) {
        char c = s[i];
        s[i] = s[j];
        s[j] = c;
        i++;
        j--;
    }
 
    // Replace the first and last character by '*' then
    // second and second last character and so on
    // until the string has characters remaining
    i = 0;
    j = n - 2;
    while (j - i > 1) {
        s[i] = s[j] = '*';
        cout << s << "\n";
        i++;
        j--;
    }
}
 
// Driver code
int main()
{
    char s[] = "geeks";
    int n = sizeof(s) / sizeof(s[0]);
 
    printPattern(s, n);
    return 0;
}

Java

// Java program to print the required pattern
class GFG
{
     
// Function to print the required pattern
static void printPattern(char[] s, int n)
{
    // Print the unmodified string
    System.out.println(s);
 
    // Reverse the string
    int i = 0, j = n - 1;
    while (i < j)
    {
        char c = s[i];
        s[i] = s[j];
        s[j] = c;
        i++;
        j--;
    }
 
    // Replace the first and last character
    // by '*' then second and second last
    // character and so on until the string
    // has characters remaining
    i = 0;
    j = n - 1;
    while (j - i > 1)
    {
        s[i] = s[j] = '*';
        System.out.println(s);
        i++;
        j--;
    }
}
 
// Driver Code
public static void main(String []args)
{
    char[] s = "geeks".toCharArray();
    int n = s.length;
 
    printPattern(s, n);
}
}
 
// This code is contributed by Rituraj Jain

Python3

# Python3 program to print the required pattern
 
# Function to print the required pattern
def printPattern(s, n):
 
    # Print the unmodified string
    print(''.join(s))
 
    # Reverse the string
    i, j = 0, n - 1
     
    while i < j:
        s[i], s[j] = s[j], s[i]
        i += 1
        j -= 1
     
    # Replace the first and last character
    # by '*' then second and second last
    # character and so on until the string
    # has characters remaining
    i, j = 0, n - 1
     
    while j - i > 1:
        s[i], s[j] = '*', '*'
        print(''.join(s))
        i += 1
        j -= 1
 
# Driver code
if __name__ == "__main__":
 
    s = "geeks"
    n = len(s)
 
    printPattern(list(s), n)
     
# This code is contributed
# by Rituraj Jain

C#

// C# program to print the required pattern
using System;
 
class GFG
{
     
// Function to print the required pattern
static void printPattern(char[] s, int n)
{
    // Print the unmodified string
    Console.WriteLine(s);
 
    // Reverse the string
    int i = 0, j = n - 1;
    while (i < j)
    {
        char c = s[i];
        s[i] = s[j];
        s[j] = c;
        i++;
        j--;
    }
 
    // Replace the first and last character
    // by '*' then second and second last
    // character and so on until the string
    // has characters remaining
    i = 0;
    j = n - 1;
    while (j - i > 1)
    {
        s[i] = s[j] = '*';
        Console.WriteLine(s);
        i++;
        j--;
    }
}
 
// Driver Code
public static void Main(String []args)
{
    char[] s = "geeks".ToCharArray();
    int n = s.Length;
 
    printPattern(s, n);
}
}
 
// This code is contributed by 29AjayKumar

Javascript

<script>
 
// Javascript program to print the required pattern
 
// Function to print the required pattern
function printPattern(s, n)
{
 
    // Print the unmodified string
    document.write( s.join('') + "<br>");
 
    // Reverse the string
    var i = 0, j = n - 1;
    while (i < j) {
        var c = s[i];
        s[i] = s[j];
        s[j] = c;
        i++;
        j--;
    }
 
    // Replace the first and last character by '*' then
    // second and second last character and so on
    // until the string has characters remaining
    i = 0;
    j = n - 1;
    while (j - i > 1) {
        s[i] = s[j] = '*';
        document.write( s.join('') + "<br>");
        i++;
        j--;
    }
}
 
// Driver code
var s = "geeks".split('');
var n = s.length;
printPattern(s, n);
 
 
</script>
Producción: 

geeks
*kee*
**e**

 

Complejidad temporal: O(n)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

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