力扣第71题:简化路径 放弃栈模拟,选择数据流√(C++)

目录

题目

思路

解题过程

复杂度

Code 


题目

给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。

在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,'//')都被视为单个斜杠 '/' 。 对于此问题,任何其他格式的点(例如,'...')均被视为文件/目录名称。

请注意,返回的 规范路径 必须遵循下述格式:

  • 始终以斜杠 '/' 开头。
  • 两个目录名之间必须只有一个斜杠 '/' 。
  • 最后一个目录名(如果存在)不能 以 '/' 结尾。
  • 此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 '.' 或 '..')。

返回简化后得到的 规范路径 。

示例 1:

输入:path = "/home//foo/"

输出:"/home/foo"

示例 2:

输入:path = "/home/user/Documents/../Pictures"

输出:"/home/user/Pictures"

示例 3:

输入:path = "/../"

输出:"/"

思路

流(istream)是C++提供的用于数据输入的类。
istringstream则是字符串输入流,它接收一个string文本用于初始化,我们随后可以将其中的内容以自定义方式读出。

以下Code: 

getline(iss,buffer,'/')

可以以'/'为分隔符将iss输入流的数据读入buffer缓存中。
当iss读完时,这个函数返回EOF(end of file),可以用于结束循环。
分割符'/'不会被写入buffer,但会被函数从iss中取出。

解题过程

构建循环体将字符串以'/'为分割依次读入答案。

构建字符串输入流istringstream iss(path);
定义string ans="/",buffer;
buffer以'/'为分割符读取iss中的数据:

读入空字符串("//"会将空字符写入buffer)直接跳过
读入"."直接跳过
读入".."回删ans
其余情况将buffer+'/'压入ans末尾。

注意字符串长度为1时保留一个'/'字符。

复杂度

时间复杂度: O(n)

空间复杂度: O(n)

 

Code 

class Solution {
public:string simplifyPath(string path) {istringstream iss(path);string ans="/",buffer;while(getline(iss,buffer,'/')){if(!buffer.empty()&&buffer!="."&&buffer!="..")ans.append(buffer+'/');if(buffer==".."){if(ans.size()>1)ans.pop_back();while(ans.size()>1&&ans.back()!='/')ans.pop_back();}}if(ans.size()>1)ans.pop_back();return ans;}
};

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

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

相关文章

医生隐瞒病情属于什么行为?

根据《民法典》第一千二百二十二条的规定,患者在诊疗活动中受到损害,有下列情形之一的,推定医疗机构有过错:   (一)违反法律、行政法规、规章以及其他有关诊疗规范的规定;   (二…

LLMs 基础知识 | BERT 模型族

本文主要文章是解决蚂蚁金服携手上海财经大学,共同出具大预言模型白皮书一文中的部分模型问题。 01 Slef-Attention 注意力机制,注意力权重可以看作是输入对输出的重要程度。这里注意,所谓注意力,即模型认为该单词有多值得被注意…

基于BlockQueue的生产消费模型及Linux中的信号量

基于BlockQueue的生产消费模型 Task.hpp #pragma once#include<cstdio> #include<iostream> #include<string> #include<functional>using namespace std; class CalTask {using func_tfunction<int(int,int,char)>;//typedef function<int(…

妙用 Batch,StarRocks 存算分离实时性能起飞

前言 当大家提到存算分离时&#xff0c;尤其是考虑后端使用 AWS S3 为代表的对象存储作为数据存储时&#xff0c;直觉就是性能拉胯&#xff0c;只能用作批量数据处理场景&#xff0c;至少这是我在跟很多用户交流时获得的第一感受。而 StarRocks 作为一个具备强实时性数据分析引…

Vue实现zip压缩下载

1&#xff0c;安装依赖npm //jszip是一个用于创建、读取和编辑.zip文件的JavaScript库 https://stuk.github.io/jszip/ npm install jszip https://www.npmjs.com/package/file-saver npm install file-saver 2&#xff0c;在所需的页面中引入对应包 import JSZip from &…

【启明智显分享】智能音箱AI大模型一站式解决方案重塑人机交互体验,2个月高效落地

2010年左右&#xff0c;智能系统接入音箱市场&#xff0c;智能音箱行业在中国市场兴起。但大潮激荡&#xff0c;阿里、小米、百度三大巨头凭借自身强大的资本、技术、粉丝群强势入局&#xff0c;形成三足鼎立态势。经过几年快速普及&#xff0c;智能音箱整体渗透率极高&#xf…

【课件分享】电子档案库房——构筑档案数字资源长期保存的安全防线

关注我们 - 数字罗塞塔计划 - 如此重磅的会议&#xff0c;如此高能的干货&#xff0c;小编已经迫不及待第一时间分享给大家&#xff0c;一起来看看杨博士在学术交流活动上的演讲内容吧。 01 课件分享 一、背景现状 二、总体设计 详细视频请在公众号中观看 三、解决方案 四、应…

汽车线束品牌服务商推荐-力可欣:致力于汽车连接线束和汽车连接器的开发、生产和应用

汽车线束品牌服务商推荐-力可欣&#xff1a;致力于汽车连接线束和汽车连接器的开发、生产和应用

安卓13 背光调节非线性问题处理,调节范围不正常问题

总纲 android13 rom 开发总纲说明 目录 1.前言 2.问题分析 3.代码修改 4.彩蛋 1.前言 我们看看现在的版本的亮度图 2.问题分析 当背光亮度设置为0%时,每次按下亮度增加键或者 input keyevent BRIGHTNESS_UP,亮度UI的增幅较大,首次按下后亮度平滑提升至大约55%,随后继…

深入调研亚马逊云科技AI平台Amazon Bedrock热门开发功能

国际数据公司&#xff08;IDC&#xff09;在2024 年 8 月发布了《 中国大模型平台市场份额&#xff0c; 2023 &#xff1a;大模型元年——初局 》调研报告 。IDC的数据显示&#xff0c;2023年中国大模型平台及相关应用市场规模达惊人的17.65亿元人民币&#xff0c;且科学计算大…

售后更新出现问题分析-幂等和防重

2024-08-27 早上测试提交BUG,说售后单状态流转不对&#xff0c;吓得我一激灵&#xff0c;赶紧打开IDEA 查看代码&#xff0c;发现售后这块代码没有动过呀&#xff0c;咋回事&#xff1f; 流程是这样的&#xff1a; 测试模拟用户下单&#xff0c;提交订单后付款&#xff0c;然后…

基于顺序表实现通讯录功能项目

本文通过顺序表实现通讯录的功能&#xff0c;增删查改数据 首先实现顺序表的功能&#xff0c;再用顺序表实现通讯录的功能 顺序表中的成员为一个结构体对象con&#xff0c;自定义的类型&#xff0c;里面包含着联系人的姓名性别年龄电话地址 seqlist.h&#xff1a;顺序表头文…

摩尔线程 × 智汇云舟|打造视频孪生国产解决方案

近日&#xff0c;摩尔线程与国内数字孪生头部企业和视频孪生首倡者智汇云舟达成深度战略合作&#xff0c;双方将在技术融合、产品共创和市场推广领域加强合作&#xff0c;共同研发面向未来的视频孪生国产化解决方案&#xff0c;推动视频孪生技术在国内关键领域的应用落地&#…

闲置物品|基于SprinBoot+vue的校园闲置物品交易平台(源码+数据库+文档)

校园闲置物品交易平台 目录 基于SprinBootvue的校园闲置物品交易平台 一、前言 二、系统设计 三、系统功能设计 5.1系统功能实现 5.2管理员模块实现 5.3用户模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xf…

ZBrush入门使用介绍——11、边缘环

大家好&#xff0c;我是阿赵。   继续介绍ZBrush的用法。这次看看边缘环的使用方法。我个人的感觉&#xff0c;边缘环有点类似于3DsMax之类软件的挤出功能&#xff0c;可以沿着环形的面&#xff0c;添加凹凸效果。   边缘环工具入口在几何体编辑里面&#xff1a; 一、 边…

【python3.8安装报错】lmportError: DLL load failed while importing ft2font: 找不到指定的模块

客户需求背景&#xff1a; 安装python3.8无法运行&#xff0c;报错 lmportError: DLL load failed while importing ft2font: 找不到指定的模块 考虑兼容性问题 这个问题首先需要考虑的是是否是python版本太高了&#xff0c;因为python3.9不支持win7&#xff0c;而python3.8版…

arm64--异常处理与中断处理

一、异常等级 EL0 非特权模式&#xff0c;用于运行应用程序 EL1为特权模式&#xff0c;用于运行操作系统内核 EL2用于运行虚拟化管理程序 EL3用于运行安全世界的管理程序 二、同步异常与异步异常 1. 同步异常&#xff1a;处理器执行某条指令而直接导致的异常&#xff0c;…

有效提高媒体曝光率,智能推荐为什么是“最大的计算系统之一”?

导语&#xff1a;我认为很少有人意识到&#xff0c;推荐系统是世界上构想过的最大的计算系统之一。——Jensen Huang &#xfeff; 在信息过载的时代背景下&#xff0c;智能推荐系统已广泛应用于电子商务、社交媒体、新闻资讯、视频音乐、旅游出行等领域&#xff0c;为用户提…

力扣经典题目之->单值二叉树(递归判断)

一&#xff1a;题目 本博客采用此模型&#xff1a; 二&#xff1a;思路 单值二叉树即所有值相等的二叉树 1&#xff1a;递归的大事化小思路即&#xff1a; 将当前节点与它的左右子节点进行比较&#xff0c;如果不相等&#xff0c;则直接返回false。如果相等&#xff0c;则递归…

记一次 .NET某实验室自动进样系统 崩溃分析

一&#xff1a;背景 1. 讲故事 前些天有位朋友在微信上联系到我&#xff0c;说他们的程序在客户那边崩掉了&#xff0c;让我帮忙看下怎么回事&#xff0c;dump也拿到了&#xff0c;那就上手分析吧。 二&#xff1a;WinDbg 分析 1. 哪里的崩溃 既然是程序的崩溃&#xff0c…