# Program to find Smallest and Largest Word in a String

• Difficulty Level : Easy
• Last Updated : 27 Sep, 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```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

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``#include``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 largets 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

 ``
Output
```Minimum length word: A
Maximum length word: GeeksforGeeks```