Open In App
Related Articles

Program to find Smallest and Largest Word in a String

Improve Article
Improve
Save Article
Save
Like Article
Like

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

Method 1: 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.

Below is the implementation of the above approach:

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
import java.io.*;
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>


Output

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.


Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!

Last Updated : 12 Dec, 2022
Like Article
Save Article
Similar Reads
Related Tutorials