Program to find Smallest and Largest Word in a String
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.
Please Login to comment...