You are given an array of words (strings) and an integer k k k. Your task is to write a function that returns the k k k longest words from the array. If there are fewer than k k k words in the array, return all the words sorted by length in descending order. If there are ties in length, return the words in alphabetical order.
Input:
An array of strings words[] where each string consists of lowercase and uppercase letters only.
An integer k k k (1 ≤ k k k ≤ 100).
Output:
An array of the k k k longest words, sorted by length (and alphabetically if lengths are equal).
Example:
plaintextInput: words = ["apple", "banana", "kiwi", "grape", "watermelon"], k = 3
Output: ["watermelon", "banana", "apple"]
Input: words = ["cat", "bat", "rat"], k = 5
Output: ["bat", "cat", "rat"]
Constraints:
The output array should not exceed k k k elements.
You may assume that the input will always have at least one word.