欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

如何用 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")]