Program to find Smallest and Largest Word in a String

23 Jun, 2022
Given a string, find the minimum and the maximum length words in it. Examples:  
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
 
Approach
The idea is to keep a starting index si and an ending index ei.  
si points to the starting of a new word and we traverse the string using ei.
Whenever a space or ‘\0’ character is encountered,we compute the length of the current word using (ei – si) and compare it with the minimum and the maximum length so far. If it is less, update the min_length and the min_start_index( which points to the starting of the minimum length word).If it is greater, update the max_length and the max_start_index( which points to the starting of the maximum length word).
If it is less, update the min_length and the min_start_index( which points to the starting of the minimum length word).
If it is greater, update the max_length and the max_start_index( which points to the starting of the maximum length word).
Finally update minWord and maxWord which are output strings that have been sent by reference with the substrings starting at min_start_index and max_start_index of length min_length and max_length respectively.
 
C++
Java
Python 3
C#
Javascript
// 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 codeint 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 Program to find Smallest and// Largest Word in a Stringclass 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
# Python3 program to find Smallest and# Largest Word in a String # defining the method to find the longest# word and the shortest worddef 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 codea = "GeeksforGeeks A Computer Science portal for Geeks"minMaxLengthWords(a) # This code is contributed by Animesh_Gupta
// C# Program to find Smallest and// Largest Word in a Stringusing 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
<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>
Minimum length word: A
Maximum length word: GeeksforGeeks
Time Complexity: O(n), where n is the length of string.
Auxiliary Space: O(n), where n is the length of string.
This is because when string is passed in the function it creates a copy of itself in stack. 
Rajput-Ji
29AjayKumar
Animesh_Gupta
mohit kumar 29
nambiarjishnu1210
sagar0719kumar
sweetyty
anandkumarshivam2266
mysticunj5qe
Strings
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Different Methods to Reverse a String in C++
KMP Algorithm for Pattern Searching
Python program to check if a string is palindrome or not
Length of the longest substring without repeating characters
Longest Palindromic Substring | Set 1
Convert string to char array in C++
stringstream in C++ and its Applications
Iterate over characters of a string in C++
Program to add two binary strings
Check for Balanced Brackets in an expression (well-formedness) using Stack