如何用 Rust 求两个数组的交、差、并和补
最编程
2024-03-19 08:23:39
...
12.23 源创会 · 上海站,聊聊 LLM 基础设施
在对数组进行操作时,我们通常遇到对两个数组求交集、差集、并集和补集的情况,这次我们使用 Rust
实现:
fn main() {
let a = vec![(2, "aa"), (4, "c"), (3, "cc")];
let b = vec![(3, "cc"), (5, "ee"), (2, "aa")];
// 取交集
let intersect = a.iter().filter(|&u| b.contains(u)).collect::<Vec<_>>();
println!("a 和 b 交集是:{:?}", intersect);
// 取差集
let minusion = a.iter().filter(|&u| !b.contains(u)).collect::<Vec<_>>();
println!("a 和 b 差集是:{:?}", minusion);
// 取并集
let union = a
.iter()
.filter(|&u| !b.contains(u))
.chain(&b)
.collect::<Vec<_>>();
println!("a 和 b 并集是:{:?}", union);
// 取补集
let complement = a
.iter()
.filter(|&u| !b.contains(u))
.chain(b.iter().filter(|&u| !a.contains(u)))
.collect::<Vec<_>>();
println!("a 和 b 补集是:{:?}", complement);
}
运行结果:
Compiling study v0.1.0 (D:\Workplaces\Rust\study)
Finished dev [unoptimized + debuginfo] target(s) in 0.82s
Running `target\debug\study.exe`
a 和 b 交集是:[(2, "aa"), (3, "cc")]
a 和 b 差集是:[(4, "c")]
a 和 b 并集是:[(4, "c"), (3, "cc"), (5, "ee"), (2, "aa")]
a 和 b 补集是:[(4, "c"), (5, "ee")]