当前位置: 面试刷题>> 单词长度最大积 (经典算法题500道)


### 题目描述补充 **题目:单词长度最大积** 给定一个字符串 `s`,其中包含了由空格分隔的多个单词。请编写一个算法来找到这些单词中任意两个单词长度乘积的最大值。注意,这里不考虑单词的重复组合。 ### 示例 **输入**: "abc def ghi jkl" **输出**: 16 **解释**: 单词长度为 [3, 3, 3, 3]。最大乘积为 3 * 4 = 12(但单词不重复组合,所以实际上我们考虑的是相邻最大长度的两个单词的乘积,即 3 * 3 = 9 并不是最大,而 "def" 和 "ghi" 的长度乘积 3 * 3 = 9 也不是,但这里为简化问题,我们可以直接取任意两个单词长度乘积的最大值,不考虑实际位置限制,即 3 * 4 = 12 是不可能的,应为 3 * 3 = 9,但这里为了说明思路,我们假设可以找到或理解为在所有可能组合中的最大值,实际上实现时应为找到最长两个单词的长度并相乘)。但更严谨的处理是,我们应该找到最长和次长单词的乘积,即 3 * 3 = 9,因为在这个例子中,没有两个单词长度和为4的。 ### 解题思路 1. 将字符串按空格分割成单词数组。 2. 遍历单词数组,记录最长和次长的单词长度。 3. 返回最长和次长单词长度的乘积。 ### PHP 代码示例 ```php function maxProductOfWordLengths($s) { $words = explode(" ", $s); $maxLen = 0; $secondMaxLen = 0; foreach ($words as $word) { $len = strlen($word); if ($len > $maxLen) { $secondMaxLen = $maxLen; $maxLen = $len; } elseif ($len > $secondMaxLen) { $secondMaxLen = $len; } } return $maxLen * $secondMaxLen; } // 示例用法 echo maxProductOfWordLengths("abc def ghi jkl"); // 输出 9 ``` ### Python 代码示例 ```python def maxProductOfWordLengths(s): words = s.split() max_len, second_max_len = 0, 0 for word in words: length = len(word) if length > max_len: second_max_len, max_len = max_len, length elif length > second_max_len: second_max_len = length return max_len * second_max_len # 示例用法 print(maxProductOfWordLengths("abc def ghi jkl")) # 输出 9 ``` ### JavaScript 代码示例 ```javascript function maxProductOfWordLengths(s) { const words = s.split(' '); let maxLen = 0; let secondMaxLen = 0; for (let word of words) { const len = word.length; if (len > maxLen) { [secondMaxLen, maxLen] = [maxLen, len]; } else if (len > secondMaxLen) { secondMaxLen = len; } } return maxLen * secondMaxLen; } // 示例用法 console.log(maxProductOfWordLengths("abc def ghi jkl")); // 输出 9 ``` **码小课网站中有更多相关内容分享给大家学习**,欢迎访问码小课网站深入学习更多编程知识及面试技巧。
推荐面试题