Programa para encontrar la palabra más pequeña y más grande en una string

Dada una string, encuentre las palabras de longitud mínima y máxima en ella. 

Ejemplos: 

Input : "This is a test string"
Output : Minimum length word: a
         Maximum length word: string

Input : "GeeksforGeeks A computer Science portal for Geeks"
Output : Minimum length word: A
         Maximum length word: GeeksforGeeks

Acercarse

La idea es mantener un índice inicial si y un índice final ei

  • si apunta al comienzo de una nueva palabra y recorremos la string usando ei.
  • Cada vez que se encuentra un espacio o un carácter ‘\0’, calculamos la longitud de la palabra actual usando (ei – si) y la comparamos con la longitud mínima y máxima hasta el momento. 
    • Si es menor, actualice min_length y min_start_index (que apunta al comienzo de la palabra de longitud mínima).
    • Si es mayor, actualice max_length y max_start_index (que apunta al inicio de la palabra de longitud máxima).
  • Finalmente, actualice minWord y maxWord, que son strings de salida que se han enviado por referencia con las substrings que comienzan en min_start_index y max_start_index de longitud min_length y max_length respectivamente.

Implementación:

C++

// CPP Program to find Smallest and
// Largest Word in a String
#include<iostream>
#include<cstring>
using namespace std;
 
void minMaxLengthWords(string input, string &minWord, string &maxWord)
{
    // minWord and maxWord are received by reference
    // and not by value
    // will be used to store and return output
    int len = input.length();
    int si = 0, ei = 0;
   
   
    int min_length = len, min_start_index = 0, max_length = 0, max_start_index = 0;
 
    // Loop while input string is not empty
    while (ei <= len)
    {
        if (ei < len && input[ei] != ' ')
            ei++;
         
        else
        {
            // end of a word
            // find curr word length
            int curr_length = ei - si;
         
            if (curr_length < min_length)
            {
                min_length = curr_length;
                min_start_index = si;
            }
             
            if (curr_length > max_length)
            {
                max_length = curr_length;
                max_start_index = si;
            }
            ei++;
            si = ei;
        }
    }
     
    // store minimum and maximum length words
    minWord = input.substr(min_start_index, min_length);
    maxWord = input.substr(max_start_index, max_length);
}
 
// Driver code
int main()
{
    string a = "GeeksforGeeks A Computer Science portal for Geeks";
    string minWord, maxWord;
    minMaxLengthWords(a, minWord, maxWord);
     
    // to take input in string use getline(cin, a);
    cout << "Minimum length word: "
        << minWord << endl
        << "Maximum length word: "
        << maxWord << endl;
}

Java

// Java Program to find Smallest and
// Largest Word in a String
class GFG
{
 
    static String minWord = "", maxWord = "";
 
    static void minMaxLengthWords(String input)
    {
          input=input.trim();//Triming any space before the String else space at start would be consider as smallest word     
        // minWord and maxWord are received by reference
        // and not by value
        // will be used to store and return output
         
        int len = input.length();
        int si = 0, ei = 0;
        int min_length = len, min_start_index = 0,
              max_length = 0, max_start_index = 0;
 
        // Loop while input string is not empty
        while (ei <= len)
        {
            if (ei < len && input.charAt(ei) != ' ')
            {
                ei++;
            }
            else
            {
                // end of a word
                // find curr word length
                int curr_length = ei - si;
 
                if (curr_length < min_length)
                {
                    min_length = curr_length;
                    min_start_index = si;
                }
 
                if (curr_length > max_length)
                {
                    max_length = curr_length;
                    max_start_index = si;
                }
                ei++;
                si = ei;
            }
        }
 
        // store minimum and maximum length words
        minWord = input.substring(min_start_index, min_start_index + min_length);
        maxWord = input.substring(max_start_index, max_start_index+max_length);//Earlier  code was not working if the largests word is inbetween String
    }
 
    // Driver code
    public static void main(String[] args)
    {
        String a = "GeeksforGeeks A Computer Science portal for Geeks";
 
        minMaxLengthWords(a);
 
        // to take input in string use getline(cin, a);
        System.out.print("Minimum length word: "
                + minWord
                + "\nMaximum length word: "
                + maxWord);
    }
}
 
// This code contributed by Rajput-Ji

Python 3

# Python3 program to find Smallest and
# Largest Word in a String
 
# defining the method to find the longest
# word and the shortest word
def minMaxLengthWords(inp):
    length = len(inp)
    si = ei = 0
    min_length = length
    min_start_index = max_length = max_start_index = 0
     
    # loop to find the length and stating index
    # of both longest and shortest words
    while ei <= length:
        if (ei < length) and (inp[ei] != " "):
            ei += 1
        else:
            curr_length = ei - si
             
            # condition checking for the shortest word
            if curr_length < min_length:
                min_length = curr_length
                min_start_index = si
                 
            # condition for the longest word
            if curr_length > max_length:
                max_length = curr_length
                max_start_index = si
            ei += 1
            si = ei
             
    # extracting the shortest word using
    # it's starting index and length    
    minWord = inp[min_start_index :
                  min_start_index + min_length]
     
    # extracting the longest word using
    # it's starting index and length    
    maxWord = inp[max_start_index : max_length]
     
    # printing the final result
    print("Minimum length word: ", minWord)
    print ("Maximum length word: ", maxWord)
     
# Driver Code
 
# Using this string to test our code
a = "GeeksforGeeks A Computer Science portal for Geeks"
minMaxLengthWords(a)
 
# This code is contributed by Animesh_Gupta

C#

// C# Program to find Smallest and
// Largest Word in a String
using System;
 
class GFG
{
 
    static String minWord = "", maxWord = "";
 
    static void minMaxLengthWords(String input)
    {
        // minWord and maxWord are received by reference
        // and not by value
        // will be used to store and return output
        int len = input.Length;
        int si = 0, ei = 0;
        int min_length = len, min_start_index = 0,
            max_length = 0, max_start_index = 0;
 
        // Loop while input string is not empty
        while (ei <= len)
        {
            if (ei < len && input[ei] != ' ')
            {
                ei++;
            }
            else
            {
                // end of a word
                // find curr word length
                int curr_length = ei - si;
 
                if (curr_length < min_length)
                {
                    min_length = curr_length;
                    min_start_index = si;
                }
 
                if (curr_length > max_length)
                {
                    max_length = curr_length;
                    max_start_index = si;
                }
                ei++;
                si = ei;
            }
        }
 
        // store minimum and maximum length words
        minWord = input.Substring(min_start_index, min_length);
        maxWord = input.Substring(max_start_index, max_length);
    }
 
    // Driver code
    public static void Main(String[] args)
    {
        String a = "GeeksforGeeks A Computer Science portal for Geeks";
 
        minMaxLengthWords(a);
 
        // to take input in string use getline(cin, a);
        Console.Write("Minimum length word: "
                + minWord
                + "\nMaximum length word: "
                + maxWord);
    }
}
 
// This code has been contributed by 29AjayKumar

Javascript

<script>
 
// JavaScript Program to find Smallest and
// Largest Word in a String
 
let minWord = "";
let maxWord = "";
 
function minMaxLengthWords(input)
{
    // minWord and maxWord are received by reference
    // and not by value
    // will be used to store and return output
    let len = input.length;
    let si = 0, ei = 0;
    let min_length = len;
    let min_start_index = 0;
    let max_length = 0;
    let max_start_index = 0;
 
    // Loop while input string is not empty
    while (ei <= len)
    {
        if (ei < len && input[ei] != ' ')
        {
            ei++;
        }
        else
        {
            // end of a word
            // find curr word length
            let curr_length = ei - si;
 
            if (curr_length < min_length)
            {
                min_length = curr_length;
                min_start_index = si;
            }
 
            if (curr_length > max_length)
            {
                max_length = curr_length;
                max_start_index = si;
            }
            ei++;
            si = ei;
        }
    }
 
    // store minimum and maximum length words
    minWord =
    input.substring(min_start_index,min_start_index + min_length);
     
    maxWord =
    input.substring(max_start_index, max_length);
     
}
 
// Driver code
 
let a = "GeeksforGeeks A Computer Science portal for Geeks";
 
minMaxLengthWords(a);
 
// to take input in string use getline(cin, a);
document.write("Minimum length word: "
        + minWord+"<br>"
        + "Maximum length word:  "
        + maxWord);
 
</script>
Producción

Minimum length word: A
Maximum length word: GeeksforGeeks

Complejidad de tiempo: O(n), donde n es la longitud de la string.
Espacio auxiliar: O(n), donde n es la longitud de la string.

Esto se debe a que cuando se pasa una string en la función, crea una copia de sí mismo en la pila.

Publicación traducida automáticamente

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