Longest and shortest words in a list
Problem
If there are multiple longest or multiple shortest words, we have to think a little harder to solve the problem. At that point, how does your brain do it? One way is to look over the list a second time after you have the max/min lengths. This is not represented in the code below.
Solution
/*
Test Case 1:
Input: Brandon, Hannah, Paul, Steve (example of a list with several words of varying length)
Expected Output: 7
Actual: 7
Test Case 2:
Input: P, Q (example of list with words of only a single character)
Expected Output: 1
Actual: 1
Test Case 3:
Input: Paul (example of list with only one word)
Expected Output: 4
Actual: 4
*/
#include <iostream>
#include <string>
using namespace std;
const int LIST_LEN = 11;
int main()
{
// Look at first word
string first_word;
cout << "Give me your list: ";
cin >> first_word;
// Count letters of first word
int count_letters_first_word = first_word.length();
int max_len_so_far = count_letters_first_word;
string longest_word_so_far = first_word;
int min_len_so_far = count_letters_first_word;
string shortest_word_so_far = first_word;
for (int i = 1; i <= LIST_LEN; i++)
{
// Look at next word
string next_word;
cout << "next word: ";
cin >> next_word;
// Count letters in next word
int count_letters_next_word = next_word.length();
// if next word had more letters, remember that next word instead of prev max word
if (count_letters_next_word > max_len_so_far)
{
max_len_so_far = count_letters_next_word;
longest_word_so_far = next_word;
}
if (count_letters_next_word < min_len_so_far)
{
min_len_so_far = count_letters_next_word;
shortest_word_so_far = next_word;
}
// Repeat until no more words
}
cout << "Max len so far is " << max_len_so_far << endl;
cout << "That word was: " << longest_word_so_far << endl;
cout << "Min len so far is " << min_len_so_far << endl;
cout << "That word was: " << shortest_word_so_far << endl;
system("pause");
return 0;
}
Back to top