rust学习笔记11-集合349. 两个数组的交集

rust除了结构体,还有集合类型,同样也很重要,常见的有数组(Array)、向量(Vector)、哈希表(HashMap) 和 集合(HashSet)字符串等,好意外呀,go没有HashMap、HashSet

数组(Array)、向量(Vector)之前已经接触过了,Array是固定的,数据存放在栈上,Vector是动态数组,数据存放在堆上。通过一个题再复习一下

242. 有效的字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词。

示例 1:

输入: s = "anagram", t = "nagaram"
输出: true

示例 2:

输入: s = "rat", t = "car"
输出: false

提示:

  • 1 <= s.length, t.length <= 5 * 104
  • s 和 t 仅包含小写字母

进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

use std::string;
pub fn is_anagram(s: String, t: String) -> bool {// 定义一个长度26的数组,因为字母有26个let mut nums = vec![0;26];// 因为每个字母ASCII都一样,先统计s放入数组,然后再统计t取出for c in s.bytes() {nums[c as usize - 'a' as usize] += 1;}for c2 in t.bytes() {nums[c2 as usize - 'a' as usize] -= 1;}//一入一出,再看数组如果数组值都是0说明有效的字母异位词返回ture,否则返回falsefor i in nums {if i != 0 {return false;}}return  true;}fn main() {let s = String::from("anagram");let t = String::from("nagaram");let res = is_anagram(s, t);println!("{}", res);println!("{}", is_anagram(String::from("rat"),String::from("car")));}

HashSet 学过java的同学很熟悉,它一种不可重复切无序的集合,和HashMap相似 HashMap下一篇再讲, 本次我们用它来解决 两个数组的交集

基本用法

use std::collections::HashSet;let mut set: HashSet<i32> = HashSet::new();// 插入元素
set.insert(1);
set.insert(2);
set.insert(3);// 检查是否包含某个值
if set.contains(&2) {println!("集合包含 2");
}// 删除元素
set.remove(&2);// 遍历集合
for num in &set {println!("{}", num);
}

349. 两个数组的交集

给定两个数组 nums1 和 nums2 ,返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]

示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的

提示:

  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 1000

解答

use std::collections::HashSet;pub fn intersection(nums1: Vec<i32>, nums2: Vec<i32>) -> Vec<i32> {// 有一个数组为空直接返回空if nums1.len() == 0 || nums2.len() == 0 {let vector: Vec<i32> = Vec::new();return  vector;}let mut set: HashSet<i32> = HashSet::new();let mut resultSet : HashSet<i32> = HashSet::new();//先去第一个数组的重复项for i in nums1 {set.insert(i);}for j in nums2 {// 判断nums2的元素在不在set中,存在就是交集,存放到resultSetif set.contains(&j) {resultSet.insert(j);}}return  resultSet.into_iter().collect();}fn main() {let  nums1 = vec![1,2,2,1];let  nums2 = vec![2,2];let res = intersection(nums1, nums2);println!("{:?}", res);}

总结,rust也有丰富的集合类型,本次只学习Vector和HashSet,后面再学其他的,集合很重要,需要重点掌握

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28305.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.net8 使用 license 证书授权案例解析

创建 webapi 项目 使用 .NET CLI 创建一个 ASP.NET Core Web API 应用&#xff0c;并添加指定的 NuGet 包&#xff0c;可以按照以下步骤操作&#xff1a; 创建 ASP.NET Core Web API 项目&#xff1a; dotnet new webapi -n WebAppLicense cd WebAppLicense添加 Standard.Li…

QT-自定义参数设计框架软件

QT-自定义参数设计框架软件 Chapter1 QT-自定义参数设计框架软件前言一、演示效果二、使用步骤1.应用进行参数注册2.数据库操作单例对象3.参数操作单例对象 三、下载链接 Chapter2 Qt中管理配置参数&#xff08;QSettings、单例模式&#xff09;1 前言2 QSettings类ini文件写in…

vue实例

// vue应用通过createApp函数创建一个新的应用实例&#xff0c;相当于根组件 import { createApp } from vue import App from ./App.vue // 在一个vue项目当中&#xff0c;有且只有一个vue的实例对象 const appcreateApp(App) // App:根组件 // 实例必须调用了.mount&am…

数据库设计理论与实践

设计理论 数据库范式 与反范式 ER模型 最小值 与最大值 | | &#xff1a;最小一个&#xff0c;最多一个 设计数据库我们只需要关心&#xff1a;一对一&#xff0c;一对多&#xff0c;多对多 。** 多的最小值 可以 不关注** ** 多对多 &#xff1a;我们可以 建立第三张表&am…

不用写代码,批量下载今日头条文章导出excel和pdf

前几天有人问我怎么批量抓取今日头条某个号的所有文章数据&#xff0c;需要文章链接&#xff0c;标题和时间&#xff0c;但是不会写代码&#xff0c;于是我写了个简单的教程 这里以渤海小吏为例 首先用edge浏览器安装web-scraper浏览器扩展 然后打开浏览器控制台&#xff0c;找…

FakeApp 技术浅析(二):生成对抗网络

生成对抗网络&#xff08;Generative Adversarial Networks&#xff0c;简称 GANs&#xff09;是 FakeApp 等深度伪造&#xff08;deepfake&#xff09;应用的核心技术。GANs 由 生成器&#xff08;Generator&#xff09; 和 判别器&#xff08;Discriminator&#xff09; 两个…

DeepSeek本地接口调用(Ollama)

前言 上篇博文&#xff0c;我们通过Ollama搭建了本地的DeepSeek模型&#xff0c;本文主要是方便开发人员&#xff0c;如何通过代码或工具&#xff0c;通过API接口调用本地deepSeek模型 前文&#xff1a;DeepSeek-R1本地搭建_deepseek 本地部署-CSDN博客 注&#xff1a;本文不仅…

JavaWeb后端基础(4)

这一篇就开始是做一个项目了&#xff0c;在项目里学习&#xff0c;我主要记录在学习过程中遇到的问题&#xff0c;以及一些知识点 Restful风格 一种软件架构风格 在REST风格的URL中&#xff0c;通过四种请求方式&#xff0c;来操作数据的增删改查。 GET &#xff1a; 查询 …

deepseek本地部署:deepseek-r1-distill-llama-70b应用实践

DeepSeek本地部署之deepseek-r1-distill-llama-70b 本地部署与 AI 应用实践 近年来&#xff0c;大型语言模型&#xff08;LLM&#xff09;的快速发展为企业数字化带来了前所未有的机遇。然而&#xff0c;中小企业在使用诸如 GPT-4 这类云端大模型服务时&#xff0c;往往面临数…

8. Pandas : Matplotlib 的使用方法

一 Matplotlib 介绍 Matplotlib 原本是为静态图表设计的&#xff0c;因而没有提供 Web 页面上的交互式体验。Plotly 是专为 Web 设计的。&#xff08;第9节&#xff09; 支持 2D 和部分 3D 绘图。涵盖折线图、散点图、热力图、3D 图等 20 余种图表。 二 导入库 import matplotl…

医疗AR眼镜:FPC如何赋能科技医疗的未来之眼?【新立电子】

随着科技的飞速发展&#xff0c;增强现实&#xff08;AR&#xff09;技术在医疗领域的应用逐渐成为焦点。医疗AR眼镜作为一种前沿的智能设备&#xff0c;正在为医疗行业带来深刻的变革。它不仅能够提升医生的工作效率&#xff0c;还能改善患者的就医体验&#xff0c;成为医疗科…

pyside6学习专栏(九):在PySide6中使用PySide6.QtCharts绘制6种不同的图表的示例代码

PySide6的QtCharts类支持绘制各种型状的图表&#xff0c;如面积区域图、饼状图、折线图、直方图、线条曲线图、离散点图等&#xff0c;下面的代码是采用示例数据绘制这6种图表的示例代码,并可实现动画显示效果&#xff0c;实际使用时参照代码中示例数据的格式将实际数据替换即可…

C/C++中函数指针和指针函数的原理和区别是什么,分别通过用例说明。

文章目录 函数指针和指针函数的区别函数指针指针函数区别 总结 函数指针和指针函数的区别 在C/C中&#xff0c;函数指针和指针函数是两个不同的概念&#xff0c;它们的用途和定义方式也有所不同。 函数指针 定义&#xff1a; 函数指针是一个指向函数的指针&#xff0c;它存储…

获取哔站评论

一、文章立论 哔哩哔哩&#xff08;B站&#xff09;是当前年轻人十分喜爱的视频分享平台&#xff0c;以其丰富多样的内容、互动性强的社区氛围以及独特的弹幕文化深受用户喜爱。在该平台上&#xff0c;用户不仅可以观看各种类型的视频&#xff0c;如动画、游戏、科技、生活、影…

MySQL-表

存储在表中的数据是一种类型的数据&#xff0c;不同类型的数据应放到不同的表中&#xff0c;否则会使以后的检索和访问很困难。数据库中的每个表都有一个名字&#xff0c;用来标识自己。此名字是唯一的&#xff0c; 这表示数据库中没有其他表具有相同的名字。表由一个或多个列组…

【UCB CS 61B SP24】Lecture 21: Data Structures 5: Priority Queues and Heaps 学习笔记

本文介绍了优先队列与堆&#xff0c;分析了最小堆的插入与删除过程&#xff0c;并用 Java 实现了一个通用类型的最小堆。 1. 优先队列 1.1 介绍 优先队列是一种抽象数据类型&#xff0c;其元素按照优先级顺序被处理。不同于普通队列的先进先出&#xff08;FIFO&#xff09;&…

DeepSeek-R2:AI大模型新纪元的破晓之光

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》&#xff08;人工智能科学与技术丛书&#xff09;【陈敬雷编著】【清华大学出版社】 文章目录 DeepSeek大模型技术系列十五DeepSeek大模型技术系列十五》DeepS…

UniApp+Vue3实现高性能无限滚动卡片组件:垂直滑动、触摸拖拽与动态导航的完美结合

引言 在移动应用开发中&#xff0c;流畅且吸引人的用户界面对于提升用户体验至关重要。本文将详细介绍如何使用UniApp和Vue3框架构建一个具有垂直方向无限滚动卡片、触摸拖拽支持、同步导航栏和平滑动画效果的高级UI组件。我们将通过代码分析每个功能的实现细节&#xff0c;帮助…

LeetCode 热题 100----1.两数之和

LeetCode 热题 100----1.两数之和 题目描述 我的解法 语言&#xff1a;js 思路就是&#xff1a;用双重循环去找哪两个数字相加等于target&#xff0c;目前的时间复杂度为O(n2)&#xff0c;之后右优化思路再更新。

华为云 | 快速搭建DeepSeek推理系统

DeepSeek&#xff08;深度求索&#xff09;作为一款国产AI大模型&#xff0c;凭借其高性能、低成本和多模态融合能力&#xff0c;在人工智能领域崛起&#xff0c;并在多个行业中展现出广泛的应用潜力。 如上所示&#xff0c;在华为云解决方案实践中&#xff0c;华为云提供的快速…