给定一个字符串数组,返回另一个包含该数组中所有最长字符串的数组.用飞镖



给定一个字符串数组,返回另一个包含该数组中所有最长字符串的数组。

例子对于inputArray = ["aba", "aa", "ad", "vcd", "aba"],输出应为solution(inputArray) = ["aba", "vcd", "aba"].

[执行时间限制]4秒(dart)

[输入]数组。字符串inputArray

[输入]数组。字符串inputArray

非空数组。

保证约束:1≤inputArray。长度≤10;1≤inputArray[i]。长度≤10.

[输出]array.string

[输出]array.string

最长字符串的数组,存储顺序与inputArray相同。

我知道上面问题的javascript代码答案,但不知道如何将其写入dart。这是javascript//

var maxLength = Math.max(...inputArray.map(s => s.length));
return inputArray.filter(s => s.length === maxLength);

您可以根据项的长度对列表进行sort,然后搜索与排序列表中最长项长度相等的项。这样的:

var inputArray = ["aba", "aa", "ad", "vcd", "aba"];
inputArray.sort(
(a, b) => b.length.compareTo(a.length),
);
var result = inputArray
.where((element) => element.length == inputArray.first.length)
.toList();
print("inputArray = $result"); //[aba, vcd, aba]

使用reduce代替sort,如下所示:

var maxString = inputArray.reduce(
(value, element) => element.length > value.length ? element : value);
var result = inputArray
.where((element) => element.length == maxString.length)
.toList();
print("inputArray = $result"); //[aba, vcd, aba]

这很简单。

final inputArray = ["aba", "aa", "ad", "vcd", "aba"];
final lenArr = inputArray.map((e) => e.length).toList()..sort();
final finalArr = inputArray.where((el) => el.length == lenArr.last);
log(finalArr.toString()); // [aba, vcd, aba]

输出:

[aba, vcd, aba]

相关内容

  • 没有找到相关文章

最新更新