给定一个字符串数组,返回另一个包含该数组中所有最长字符串的数组。
例子对于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]