当前位置: 首页 > article >正文

基于路径简化问题说明vector较于数组的优势

以前写程序时遇到需要动态添加或删除元素的情况我总是习惯用数组然后维护一个计数器。但自从用了vector我发现它的push_back和pop_back非常方便特别是在做这道“简化路径”的题目的时候介绍vectorvector是C标准库中std::vector类的实例它封装了一个动态大小的数组。与普通数组不同vector可以自动扩容并且在末尾添加或删除元素都非常高效。常用成员函数void push_back(const T value);// 将元素添加到末尾void pop_back();// 删除最后一个元素size_type size() const;// 返回当前元素个数bool empty() const;// 判断是否为空以一道题目为例题目简化路径给定一个字符串path表示指向某一文件或目录的绝对路径将其转化为更加简洁的规范路径。规则如下一个点.表示当前目录直接忽略。两个点..表示返回上一级目录。三个点...或更多点视为普通目录名。多个连续的斜杠///合并成一个斜杠。规范路径必须以/开头目录之间只有一个/结尾不能有/且路径中不能出现.和..。输入样例text/home/ /../ /home//foo/ /a/./b/../../c/ /a/../../b/../c//.// /a//b////c/d//././/..输出样例text/home / /home/foo /c /c /a/b/c如何用vector解决解题思路其实很简单把路径按/分割成一个个部分然后像进文件夹一样遇到普通目录就存起来遇到..就退回上一个目录删除最后一个遇到.就忽略。如果用数组可能会这样写cpp string dirs[1000]; // 假设最多1000层 int cnt 0; // 记录当前存了多少个 ... if (sub ..) { if (cnt 0) cnt--; // 手动让cnt减1 } else if (sub ! .) { dirs[cnt] sub; // 先赋值再把cnt加1 }每次遇到..都需要考虑前面读取了多少个字符了,很麻烦,要时刻记得维护cnt而且还得保证cnt不会越界比如cnt已经是0时不能再减。代码里到处都是cnt很容易写错。但是用vector就轻松多了cpp vectorstring parts; // 不用指定大小 ... if (sub ..) { if (!parts.empty()) { parts.pop_back(); // 直接删除最后一个不用管现在有几个 } } else if (sub ! .) { parts.push_back(sub); // 自动添加到末尾 }完全不需要关心当前存了多少个元素pop_back会自动删除最后一整个上次加入的字符串push_back会自动在末尾添加。代码读起来就像是在描述逻辑“遇到..就退回上一级pop_back”完整代码#define _CRT_SECURE_NO_WARNINGS #includeiostream #includecstring #includevector using namespace std; string fun(string a) { string temp a /; vectorstring parts; int left 1; // 跳过开头的 / // 第一步提取所有路径部分 for (int i left; i temp.length(); i) { if (temp[i] /) { if (i left) { string sub temp.substr(left, i - left); // 处理特殊目录 if (sub ..) { if (!parts.empty()) { parts.pop_back(); // 返回上一级 } } else if (sub ! .) { parts.push_back(sub); // 普通目录名 } // . 直接忽略 } left i 1; } } // 第二步构建结果 if (parts.empty()) return /; string ans; for (const string p : parts) { ans / p; } return ans; } int main() { string path; while (cin path) { cout fun(path) endl; } return 0; }

相关文章:

基于路径简化问题说明vector较于数组的优势

以前写程序时,遇到需要动态添加或删除元素的情况,我总是习惯用数组,然后维护一个计数器。但自从用了vector,我发现它的push_back和pop_back非常方便,特别是在做这道“简化路径”的题目的时候介绍vectorvector是C标准库…...

Leetcode128.『最长连续序列』学习笔记

1. 使用set的简洁解法 class Solution:def longestConsecutive(self, nums: List[int]) -> int:nums set(nums)longest 0for num in nums:if num - 1 not in nums:curr numwhile num in nums:num1longest max(longest, num - curr)return longest加了set之后&#xff0c…...

SpringBoot单元测试实战:Mock技术全解析

在 Spring Boot 中整合 Mock(模拟) 主要用于单元测试和集成测试,目的是隔离被测组件,避免依赖真实外部服务(如数据库、HTTP 接口、文件系统等)。Spring Boot 提供了强大的测试支持,结合 JUnit 5…...

239 滑动窗口最大值

题目 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入:nums [1,3,-1,-3,5,3,6,7], k 3…...

大模型连载8:词向量如何表示近义词?

余弦相似度和欧式距离 既然我们将 token 都转换到了高维的数学空间中,那么在高维数学空间中,如何来衡量两个 token (高维空间中为向量)的含义是相似的,还是相反的呢? 比如,在人类的认知中&…...

计算机毕业设计之springboot北工国际健身俱乐部

本系统为会员而设计制作北工国际健身俱乐部,旨在实现北工国际健身俱乐部智能化、现代化管理。本北工国际健身俱乐部管理自动化系统的开发和研制的最终目的是将北工国际健身俱乐部的运作模式从手工记录数据转变为网络信息查询管理,从而为现代管理人员的使…...

Day01笔记整理

java背景: java用于企业及应用开发,有JavaSE(基本)、JavaEE(企业)、JavaME(小型)三大技术平台。 jdk 1、jdk中的java语句运用: 在jdk安装目录的bin下,存在…...

计算机毕业设计之springboot基于宠物饲养管理APP的设计与实现

宠物饲养管理APP设计的目的是为用户提供宠物信息、年龄段、饮食信息、生活习惯等方面的平台。与PC端应用程序相比,宠物饲养管理APP的设计主要面向于宠物店,旨在为管理员和用户提供一个宠物饲养管理APP。用户可以通过APP及时查看宠物信息等。宠物饲养管理…...

AI原生应用领域意图识别的发展现状与未来展望

AI原生应用的"心灵翻译官":意图识别的进化之路与未来图景 关键词 意图识别、AI原生应用、自然语言理解、多模态交互、大模型微调、小样本学习、可解释性AI 摘要 在AI原生应用(AI-Native Apps)的世界里,意图识别就像…...

DVWA 搭建踩坑全记录:卡在 “Invalid database selected” 最后一关(新手求助!Help)

环境:Windows 10 phpStudy v8.1 MySQL 5.7.26 DVWA 最新版已做操作:1. phpStudy 安装成功,Apache 和 MySQL 都能启动 2. MySQL 命令行能连上(root 密码空) 3. DVWA 文件放在 WWW 下,config.inc.php 已创建并…...

华为OD机考双机位C卷 - 智能驾驶(Java Python JS GO C++ C)

智能驾驶 2026华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 华为OD机试双机位C卷真题目录点击查看: 【全网首发】2026华为OD机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷) 题目描述 有一辆汽车需要从 m * n 的地图左上角(起点)开往地图的右下角(终…...

不懂代码,我用AI编程给5岁女儿开发了个流光画板(带你一步一步设计一个属于自己的流光画板)

我女儿经常玩的一个画板APP,但是经常弹广告。恰巧看到某家大模型说一句话生成一个画板,抠门的我想着AI编程不是说自己很厉害吗,我就用AI编程尝试去写一个。 靠着记忆让AI生成一个画板html,期初提示词比较笼统“帮我设计一个画板&a…...

数据即资产,安全即底线——企业资产数据安全控制管理的全维度实践与未来展望

在数字经济深度渗透的今天,数据已成为企业核心战略资产,是驱动业务创新、提升核心竞争力的关键引擎。从客户信息、财务数据到核心技术文档、商业秘密,数据的流转与应用贯穿企业运营全链条,但与此同时,数据泄露、篡改、…...

2026最新 springboot+vue邯郸特产交易平台

文章目录前言源码获取(稀缺资源,尽快转存到自己网盘,防止失效)详细视频演示技术栈后端技术前端技术功能模块后台管理端管理员功能商家功能具体实现截图后端框架SpringBoot前端框架Vue持久层框架MyBaits成功系统案例:代…...

想要实现真正的认知自动化?企业智脑定制难道不是必经之路?

想要实现真正的认知自动化?企业智脑定制难道不是必经之路?在企业数字化转型的漫长征途中,我们曾寄希望于ERP系统理顺流程,寄希望于RPA(机器人流程自动化)替代重复劳动。然而,当大模型浪潮席卷全…...

OSPF4种网络类型分析-Broadcast/NBMA/P2MP/P2P

一、四种OSPF网络类型分析1. Broadcast(广播模式) 网络特点:支持广播通信,所有设备共享同一广播域(如以太网、VLAN)。 邻居建立:路由协议通过多播Hello包自动发现邻居,并选举DR&…...

HandBrake - 开源免费视频格式转换/压缩转码压制工具

无论是下载高清电影,还是用手机录制的视频,很多时候文件体积都非常巨大。收藏保存或分享时会比较麻烦,因此常备一款真正好用的免费视频压缩压制/格式转换软件是很有必要的。 网上视频处理工具非常繁多,收费免费的一大堆&#xff…...

基于javaweb和mysql的ssm+maven情缘图书馆管理系统(java+ssm+tomcat+maven+mysql)

基于javaweb和mysql的ssmmaven情缘图书馆管理系统(javassmtomcatmavenmysql) 私信源码获取及调试交流 私信源码获取及调试交流 运行环境 Java≥8、MySQL≥5.7、Tomcat≥8 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,…...

Winform Modbus 316线程 异步 λ表达式 泛型与数组 Encoding.ASCII.GetBytes bitConverter 大端小端 寄存器与label

this.Invoke 首先纠正:代码里不是List.Invoke,是**this.Invoke(this代表当前的FrmMain窗体对象),这是WinForm开发中跨线程更新UI的核心方法**,灯珠状态、仪表、图表这些UI控件的更新都靠它,下面…...

Hexo Butterfly 主题副标题不显示问题解决方案

问题描述 在 Hexo 根目录的 _config.yml 中配置了 subtitle,但网站没有显示副标题。 问题原因 配置位置错误! Butterfly 主题的副标题配置不在 Hexo 根目录的 _config.yml 中,而是在主题配置文件 themes/butterfly/_config.yml 中。 错误…...

深入解析MySQL数据库报错:`ERROR 1146 (42S02) Table ‘mysql.user‘ doesn‘t exist`

在安装或升级MySQL数据库时,你可能会遇到ERROR 1146 (42S02): Table mysql.user doesnt exist错误。这个错误表明尝试访问的mysql.user表不存在,这是MySQL用于存储用户账户和权限信息的关键系统表。本文将详细探讨这一错误的原因和解决方案,帮…...

带你轻松了解半导体CIM系统之AMHS (二)

👉带你轻松了解半导体CIM系统之AMHS (一) 话接上文,半导体AMHS系统是芯片制造晶圆厂中十分关键的系统,由搬运设备,存储与净化设备和控制系统组成。而在Fab(晶圆厂)中AMHS中的OHT也就是天车搬运十分繁忙&am…...

Android Studio 安装保姆级教程(mac版)

本文是一篇 从零开始的完整安装教程,适用于 Mac用户。 按照本文步骤操作,可以完成: 1:Android Studio 安装 2:Android SDK 配置 3:JDK 配置 4:Gradle 配置 5;Android 模拟器安装 6:第一个 Android 项目运行 一、下载 Android Studio 打…...

中小企业可用福尔蒂轻量化改性套件:含17种PA6/PBT配比+免费云端模拟

最近有位做汽车内饰件的朋友跟我聊起一个实际困扰:他们接了一个新项目,需要把传统PA6部件换成更轻、更耐热又不缩水的新材料,但试了几家供应商提供的改性料,不是注塑时流纹严重,就是批次间性能波动大,小批量…...

长亭 Xray Web 漏洞扫描器

长亭 Xray Web 漏洞扫描器 适用对象:安全研究人员、渗透测试工程师、开发人员、网络安全爱好者 前置知识:了解基本的 HTTP 协议、Web 安全概念(如 SQL 注入、XSS) 法律声明:本教程仅用于授权的安全测试、本地靶场练习…...

一次试样失败催生的技术革新:福尔蒂吹瓶专用ACR助剂逆向推演与流变拟合

那年夏天,一家饮料包装厂在调试新产线时遇到个棘手问题:吹瓶过程中频繁出现壁厚不均、肩部发白、甚至局部开裂——同一套模具、同一批PET切片、连温控参数都没动,就是反复试样失败。技术人员查了一周,最后把样本寄到了青岛福尔蒂新…...

国产替代:福尔蒂vs利安隆/金发/普立万在阻燃PC母粒的技术代差与应用边界

最近不少做工程塑料的朋友都在问一个问题:同样是阻燃PC母粒,为什么有些批次稳定性好、注塑不析出、火焰自熄快,而另一些却容易黄变、分散差、甚至过不了UL94 V-0测试?这个问题背后,其实不是简单的配方差异,…...

从0到1,一套系统搞定C端+B端+平台端

大家好,今天就带着大家,手把手拆解、搭建一套完整的 WiFi 连接小程序。不用复杂技术、不用冗余功能,严格围绕「用户连网、商家管理、平台广告」三大核心,从功能设计到页面逻辑,一步步讲清楚怎么搭建、每一步做什么。整…...

react-i18next 国际化支持

一、今日整体工作内容 今天完成的是做了国际化支持,实现中英文语言切换。首先看了官方的 API 文档,它支持不同的编辑器语言。然后我用 React Next 18 引入了相关包,自己维护了一个 locale 键值数组,对应中文和英文字段。 全文国际…...

2025 年全国大学生电子设计竞赛试题(C 题)——基于单目视觉的目标物测量装置

一、 任务 设计制作基于单目视觉的目标物测量装置,用于测量并显示基准线到目标物的距离 D(见说明)、目标物平面(简称物面)上几何图形的边长或直径 x,测量系统组成如图 1 所示。测量电路和单目摄像头组成测量…...