Hackbright Code Challenges

Longest Word: Solution

Longest Word: Solution

Problem

Longest Word

Whiteboard

Easier

Concepts

Strings, Lists

Download

longest-word-solution.zip


We can do this by keeping track of the best seen so far:

longest-word.py
def find_longest_word(words):
    """Return longest word in list of words."""

    # START SOLUTION

    longest = len(words[0])

    for word in words:
        if longest < len(word):
            longest = len(word)

    return longest

Another way: we could use a list comprehension to make a new list of words-lengths, and return the largest number in that list:

longest-word.py
def find_longest_word_max(words):
    """Return longest word in list of words.

    For example::

        >>> find_longest_word_max(["hi", "hello"])
        5

        >>> find_longest_word_max(["Balloonicorn", "Hackbright"])
        12
    """

    return max([len(w) for w in words])

Advanced: Clever Version

Python’s max function finds the biggest thing in a list (or set or tuple) — but it also take a second argument, a “key” function which it can use to determine how to judge which is the biggest.

For example, for the numbers [-5, 1, 2], the largest is 2. If we consider only the absolute values, though, we could find use this “key function” capability to have it consider the absolute values of the numbers:

>>> max([-5, 1, 2], key=abs)
5

(abs is the built-in function for Python to return the absolute value of a passed-in number)

We can use this for our longest word, too:

longest-word.py
def find_longest_word_clever(words):
    """Return longest word in list of words.

    For example::

        >>> find_longest_word_clever(["hi", "hello"])
        5

        >>> find_longest_word_clever(["Balloonicorn", "Hackbright"])
        12
    """

    return len(max(words, key=len))

Here, we’re saying “considering the length of words, find the longest word, then return the length of it.”

Key functions are really useful; you’ll can use them with Python’s min, max, sorted, and a few other places.