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

zaq34kh6  于 2022-11-30  发布在  Flutter
关注(0)|答案(2)|浏览(182)

给定一个字符串数组,返回另一个包含其所有最长字符串的数组。
范例
对于inputArray = ["aba", "aa", "ad", "vcd", "aba"],输出应为解决方案(inputArray)= [“aba”,“vcd”,“aba”]。
[执行时间限制] 4秒(飞镖)
[输入]数组.字符串输入数组
[输入]数组.字符串输入数组
非空数组。
保证约束:1 ≤输入数组,长度≤ 10,1 ≤输入数组[i],长度≤ 10。
[输出]数组.字符串
[输出]数组.字符串
最长字符串的数组,存储顺序与inputArray中的顺序相同。
我知道上面问题的javascript代码答案,但不知道如何将其写入dart。这是javascript //

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

des4xlb01#

你可以按项目的长度对列表进行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]
5vf7fwbs

5vf7fwbs2#

这很简单。

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]

相关问题