Primera substring cuyo reverso es una palabra en la string

Dada una string str separada por espacios , la tarea es encontrar la primera substring cuyo reverso es una palabra en la string. Todos los caracteres de la string están en minúsculas del alfabeto inglés. La string termina con # . Si no existe tal substring, devuelve -1

Ejemplos: 

Entrada: str = “el mango es dulce cuando nam en lo prueba#” 
Salida: man 
Explicación: La substring “man” se invierte a “nam” y es una palabra en la string dada

Entrada: str = “hola mundo#” 
Salida: -1

Acercarse:

  1. Almacena todas las palabras de la string en un mapa.
  2. Encuentre todas las substrings de la string.
  3. Para cada substring, compruebe si el reverso de la substring es una palabra de la string. Si no existe tal substring, imprima -1.

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

C++

// C++ program to find first substring
#include <bits/stdc++.h>
using namespace std;
 
// Function to find first substring
string first_substring(string s)
{
    int n = s.length(), c = 0;
    string s1, s2;
    map<string, int> mpp;
 
    // Storing the words present in string
    for (int i = 0; i < n; i++) {
        if (s[i] == ' ' || s[i] == '#') {
            s1 = s.substr(c, i - c);
            mpp[s1] = 1;
            c = i + 1;
        }
    }
 
    // Calculating for all
    // possible valid substring.
    for (int i = 0; i < n; i++) {
        if (s[i] == ' ') {
            continue;
        }
        for (int j = 0; j < n; j++) {
            if (s[j] == ' ') {
                break;
            }
            s1 = s.substr(i, j - i + 1);
            s2 = s1;
            reverse(s1.begin(), s1.end());
            if (mpp[s1]) {
                return s2;
            }
        }
    }
    return "-1";
}
// Driver code
int main()
{
    string s, s1;
    s = "mango is sweet when nam en tastes it#";
    s1 = first_substring(s);
    cout << s1 << "\n";
    return 0;
}

Java

// Java program to find first subString
import java.util.*;
 
class GFG
{
 
// Function to find first subString
static String first_subString(String s)
{
    int n = s.length(), c = 0;
    String s1, s2;
    HashMap<String, Integer> mpp =
        new HashMap<String, Integer>();
 
    // Storing the words present in String
    for (int i = 0; i < n; i++)
    {
        if (s.charAt(i) == ' ' || s.charAt(i) == '#')
        {
            s1 = s.substring(c, i);
            mpp.put(s1, 1);
            c = i + 1;
        }
    }
 
    // Calculating for all
    // possible valid subString.
    for (int i = 0; i < n; i++)
    {
        if (s.charAt(i) == ' ')
        {
            continue;
        }
        for (int j = 0; j < n; j++)
        {
            if (s.charAt(i) == ' ')
            {
                break;
            }
            s1 = s.substring(i, j - i + 1);
            s2 = s1;
            s1 = reverse(s1);
            if (mpp.containsKey(s1))
            {
                return s2;
            }
        }
    }
    return "-1";
}
static String reverse(String input)
{
    char[] a = input.toCharArray();
    int l, r = a.length - 1;
    for (l = 0; l < r; l++, r--)
    {
        char temp = a[l];
        a[l] = a[r];
        a[r] = temp;
    }
    return String.valueOf(a);
}
 
// Driver code
public static void main(String[] args)
{
    String s, s1;
    s = "mango is sweet when nam en tastes it#";
    s1 = first_subString(s);
    System.out.print(s1+ "\n");
}
}
 
// This code is contributed by Rajput-Ji

Python3

# Python3 program to find first substring
 
# Function to find first substring
def first_substring(s) :
 
    n = len(s); c = 0;
    mpp = {};
 
    # Storing the words present in string
    for i in range(n) :
        if (s[i] == ' ' or s[i] == '#') :
            s1 = s[c: i];
            mpp[s1] = 1;
            c = i + 1;
 
    # Calculating for all
    # possible valid substring.
    for i in range(n) :
        if (s[i] == ' ') :
            continue;
         
        for j in range(n) :
            if (s[j] == ' ') :
                break;
             
            s1 = s[i : j + 1];
            s2 = s1;
            s1 = s1[::-1];
             
            if s1 in mpp :
                if mpp[s1] :
                    return s2;
     
    return "-1";
 
# Driver code
if __name__ == "__main__" :
 
    s = "mango is sweet when nam en tastes it#";
    s1 = first_substring(s);
    print(s1);
 
# This code is contributed by AnkitRai01

C#

// C# program to find first subString
using System;
using System.Collections.Generic;
 
class GFG
{
 
// Function to find first subString
static String first_subString(String s)
{
    int n = s.Length, c = 0;
    String s1, s2;
    Dictionary<String, int> mpp =
        new Dictionary<String, int>();
 
    // Storing the words present in String
    for (int i = 0; i < n; i++)
    {
        if (s[i] == ' ' || s[i] == '#')
        {
            s1 = s.Substring(c, i - c);
            mpp.Add(s1, 1);
            c = i + 1;
        }
    }
 
    // Calculating for all
    // possible valid subString.
    for (int i = 0; i < n; i++)
    {
        if (s[i] == ' ')
        {
            continue;
        }
        for (int j = 0; j < n; j++)
        {
            if (s[i] == ' ')
            {
                break;
            }
            s1 = s.Substring(i, j - i + 1);
            s2 = s1;
            s1 = reverse(s1);
            if (mpp.ContainsKey(s1))
            {
                return s2;
            }
        }
    }
    return "-1";
}
static String reverse(String input)
{
    char[] a = input.ToCharArray();
    int l, r = a.Length - 1;
    for (l = 0; l < r; l++, r--)
    {
        char temp = a[l];
        a[l] = a[r];
        a[r] = temp;
    }
    return String.Join("", a);
}
 
// Driver code
public static void Main(String[] args)
{
    String s, s1;
    s = "mango is sweet when nam en tastes it#";
    s1 = first_subString(s);
    Console.Write(s1 + "\n");
}
}
 
// This code is contributed by Rajput-Ji

Javascript

<script>
  
// Javascript program to find first substring
 
// Function to find first substring
function first_substring(s)
{
    var n = s.length, c = 0;
    var s1, s2;
    var mpp = new Map();
 
    // Storing the words present in string
    for (var i = 0; i < n; i++) {
        if (s[i] == ' ' || s[i] == '#') {
            s1 = s.substring(c, i);
            mpp.set(s1, 1);
            c = i + 1;
        }
    }
 
    // Calculating for all
    // possible valid substring.
    for (var i = 0; i < n; i++) {
        if (s[i] == ' ') {
            continue;
        }
        for (var j = 0; j < n; j++) {
            if (s[j] == ' ') {
                break;
            }
            s1 = s.substring(i, j + 1);
            s2 = s1;
            s1 = s1.split('').reverse().join('');
 
            if (mpp.has(s1)) {
                return s2;
            }
        }
    }
    return "-1";
}
// Driver code
var s, s1;
s = "mango is sweet when nam en tastes it#";
s1 = first_substring(s);
document.write( s1 );
 
 
</script>
Producción: 

man

 

Publicación traducida automáticamente

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