Program to find Smallest and Largest Word in a String

• Difficulty Level : Easy
• Last Updated : 27 Dec, 2021

Given a string, find the minimum and the maximum length words in it.
Examples:

Input : "This is a test string"
Output : Minimum length word: is
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).
• 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++

 // CPP Program to find Smallest and// Largest Word in a String#include#includeusing 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

 // 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

Python 3

 # 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#

 // 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

Javascript


Output
Minimum length word: A
Maximum length word: GeeksforGeeks