使用 JavaScript 查找数组中所有最长的字符串
在给定的问题陈述中,我们必须借助 Javascript 功能从数组中找到所有最长的字符串。所以基本上,可以通过获取每个字符串的长度,然后将这些长度与最大长度进行比较来完成此任务。
理解问题
手头的问题是从 Javascript 中的数组中找到最长的字符串。所以我们将有一个字符串数组,我们的主要任务是识别具有最大长度的字符串并将它们显示为一个新数组。例如:假设我们有一个字符串数组 ['abc', 'defg', 'hijkl', 'mnopqr', 'stuvwxyz'],那么此数组中最长的字符串是 ['stuvwxyz']。所以我们必须实现函数来执行相同的任务。
给定问题的逻辑
为了解决这个问题,我们将定义一个函数来执行此任务。并且在函数内部,我们首先必须找到字符串的长度。为此,我们将迭代字符串数组并跟踪找到的最大长度。对于数组中的每个字符串,我们将将其长度与当前最大长度进行比较,并在需要时进行更新。因此,我们将拥有最长字符串的长度。
现在,我们将通过再次迭代字符串数组来过滤最长字符串,这次我们将使用 filter 方法。如果长度与找到的最大长度匹配。因此,我们将将其包含在数组中。最后,我们将返回一个新数组,其中将包含所有最长的字符串。
算法
步骤 1:由于我们必须在给定数组中找到最长的字符串。因此,为了执行此任务,我们将创建一个名为 findLongestStrings 的函数,此函数将接收一个数组作为输入。在这个数组中,我们将有字符串。我们将从中找到最长的字符串。
步骤 2:现在,我们将使用一个变量来存储字符串的最大长度值。并将其初始化为零。
步骤 3:在此步骤中,我们需要找到数组中存在的字符串的长度并找到字符串的 maxLength。因此,我们将遍历数组项。
步骤 4:在循环内部,我们将检查字符串长度是否大于 maxLength 的条件,如果此条件为真,则使用当前字符串的长度更新 maxLength 值。遵循此步骤,直到我们找到 maxLength 为止。
步骤 5:因此,我们将使用最长字符串过滤字符串数组。为了执行此任务,我们将使用 filter 方法遍历字符串数组。对于每个字符串,我们将检查其长度是否与 maxLength 匹配。如果长度相等,我们将返回一个新数组,该数组将包含数组中最长的字符串。
示例
// Function to find the longest string function longestStrings(array) { let maxLength = 0; for (let i = 0; i < array.length; i++) { if (array[i].length > maxLength) { maxLength = array[i].length; } } const longestStrs = array.filter((str) => str.length === maxLength); return longestStrs; } const strings = ["strawberry", "banana", "kiwi", "orange", "pear"]; const longest = longestStrings(strings); console.log(longest);
输出
[ 'strawberry' ]
复杂度
从数组中查找最长字符串的时间复杂度为 O(n),其中 n 是数组中存在的字符串数。因为我们执行了两个基本操作。第一个是查找最大长度,第二个是将字符串的长度与计算出的最大长度进行匹配。此函数的空间复杂度为 O(1) 到 O(n),因为它取决于数组中找到的最长字符串的数量。
结论
我们实现的代码有效地解决了问题。此代码有效地找到数组中的最大长度和最长字符串。代码的复杂度是线性的,这使得代码对于任何大小的数组都非常有效。