leetcode做题笔记71

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

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

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

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

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

思路一:模拟题意

char * simplifyPath(char * path){char *stack[100];int size = 0;for (char *s = strtok(path, "/"); s; s = strtok(NULL, "/")) {if (strcmp(s, ".") == 0) {//do nothing} else if (strcmp(s, "..") == 0) {//back size = fmax(0, size-1);} else {stack[size++] = s;}}if (size == 0) return "/";char *res = calloc(1000, sizeof(char));for (int i=0; i<size; ++i) {strcat(res, "/");strcat(res, stack[i]);}return res;
}

时间复杂度O(n),空间复杂度O(n)

分析:

本题将绝对路径改为规范路径,即判断是否有“."”..“这些特殊的字符,对相应字符情况进行处理,利用栈先进后出的特点,将字符输入栈中进行判断。

总结:

本题考察对字符串的应用,考虑是否有“."”..“这些特殊的字符再处理即可得到答案

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

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

相关文章

MacOS安装RabbitMQ

官网地址&#xff1a; RabbitMQ: easy to use, flexible messaging and streaming — RabbitMQ 一、brew安装 brew update #更新一下homebrew brew install rabbitmq #安装rabbitMQ 安装结果&#xff1a; > Caveats > rabbitmq Management Plugin enabled by defa…

字符统计、

描述 给定一篇文章&#xff0c;包含3行文字&#xff0c;每行有80个字符。请编写程序&#xff0c;统计其中的英文大写字母、小写字母、数字、空格以及其他字符的个数。 输入 输入为三行字符串&#xff0c;每行字符串长度不超过 80。 输出 输出五行&#xff0c;分别表示对应…

C++笔记之if(指针)的含义

C笔记之if(指针)的含义 code review! 文章目录 C笔记之if(指针)的含义例1例2 例1 例2

2308C++内存序概略

参考 释放:在释放前的任意读写操作不能放在此操作之后. 获取:在获取后的任意读写操作不能放在此操作之前. 放松:只保证本操作的原子性,一般用于统计. 消费:在加载后的依赖本原子变量的,都不能重排在本操作之前. 获取释放:获取释放 序列一致,完全一致.

基于 CentOS 7 构建 LVS-DR 群集。

1.准备实验环境 本次实验我准备了4台虚拟机 DS:DIP--192.168.163.138 VIP--192.168.163.200 RIP1(web1)--192.168.163.140 RIP2(web2)--192.168.163.141 Client&#xff1a;user--192.168.163.142 2.配置服务器环境 1)搭建简易的web服务 RIP1 [rootlocalhost ~]# yum …

Maven工程的安装配置及搭建(集成eclipse完成案例,保姆级教学)

目录 一.下载及安装及环境配置 1.下载及安装 2.环境变量的配置 3.检测是否安装成功 4.配置Maven 1.更换本地仓库 2. 配置镜像 二.集成eclipse完成案例 1.eclipse前期配置Maven 2.创建Maven工程 一.下载及安装及环境配置 1.下载及安装 下载地址&#xff1a;Maven – Down…

JUL 日志 - 最简单易用的Java日志框架

在正式的生产环境下是不能使用 System.out 进行日志记录的 因为 System.out 不能提供时间、线程、执行过程 等信息&#xff0c;如果要手动打印输出则会非常麻烦 而日志就帮我们把这些事给干了 接下来我们学一个最简单的日志框架 JUL JUL全称Java util Logging是java原生的日志框…

SpringBoot汇总

文章目录 构建SpringBoot项目springboot项目启动后执行一段程序的方式Spring Boot Devtools 开发热部署springboot项目控制台打印sql日志SpringBoot定时任务之ScheduledSpringBoot使用Validation校验参数springboot中&#xff0c;日志的配置和与其他日志的兼容问题springboot错…

MDC轻量化日志链路跟踪的若干种应用场景

0x01 前言 当你的应用程序同时处理多个用户的请求时&#xff0c;你会看到日志文件或者控制台中的输出通常都是交错的&#xff0c;而非线性连续的。尤其是在分布式系统中&#xff0c;一个用户请求可能包含了若干次的服务节点调用&#xff0c;它的日志也因此变得碎片化&#xff…

数据结构:堆的实现(C实现)

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》 文章目录 一、堆二、实现思路1. 结构的定义2. 堆的构建 (HeapInit)3. 堆的销毁 (HeapDestroy)4. 堆的插入 (HeapPush)5. 堆的删除 (HeapPop)6. 取堆顶的数据 (HeapTop)7. 堆的数据个数 (HeapSize…

k8s-1.22.3集群etcd备份与恢复

一、环境准备 注&#xff1a;请在测试环境下验证操作 CentOS Linux release 7.7.1908 (Core) 3.10.0-1062.el7.x86_64 kubeadm-1.22.3-0.x86_64 kubelet-1.22.3-0.x86_64 kubectl-1.22.3-0.x86_64 kubernetes-cni-0.8.7-0.x86_64 主机名IPVIPk8s-master01192.168.10.61192…

Gephi国家政策文本关键词共现矩阵的共现网络图分析

文章目录 分词jieba分词关键词提取python处理形成共现矩阵gephi导入共现矩阵过滤边的权重进行优化最终效果分词 本文研究不同文章中的关键词出现次数,因此将出现在同一篇文章中的关键词都定义为”共现”。 jieba分词 对不同后缀文件(txt、docx、pdf)进行不同处理,提取文…

RK3568开发笔记-Vendor Storage分区使用

目录 前言 一、什么是Vendor Storage分区? 二、Vendor Storage分区使用 总结 前言 在嵌入式系统开发中&#x

Dynamic Web TWAIN Crack,文档扫描SDK

Dynamic Web TWAIN Crack,文档扫描SDK Dynamic Web TWAIN用于快速部署 Web 应用程序的文档扫描 SDK&#xff0c;文档扫描SDK&#xff0c;&#xff0c;超过 5300 家公司信任 Dynamic Web TWAIN &#xff0c;因其稳健性和安全性而受到超过 5300 家公司的信赖&#xff0c;Dynamic …

Unity游戏源码分享-模拟城市搭建City Adventure

Unity游戏源码分享-模拟城市搭建City Adventure 插件如下&#xff1a; 下载地址&#xff1a; https://download.csdn.net/download/Highning0007/88191931

***is not a commit and a branch ‘***‘ cannot be created from it 报错

git执行如下代码 git checkout -b daily/1.0.0 origin/daily/1.0.0遇到报错 fatal: ‘origin/daily/1.0.27’ is not a commit and a branch ‘daily/1.0.27’ cannot be created from it 解决办法: git fetch --all原因: 报错说is not a commit而不是说branch doesn’t exis…

Webstorm + Egg.js 进行断点调试

Webstorm Egg.js 进行断点调试 1、在工具栏找到编辑配置&#xff0c;创建已运行Node.js 应用程序的调试配置 2、debug调试配置 3、调试 4、查看断点是否起效

Jenkins 修改默认管理员帐号

1、新增一个新的超级管理员用户&#xff0c;并验证能正常登录 2、进入 Jenkins 用户管理目录&#xff1a; /data/software/jenkins/users 3、修改超级管理文件夹的名称为其他名称&#xff0c;如&#xff1a;mv admin_*** ifadm_*** 4、重启Jenkins容器

PHP实现保质期计算器

1.php实现保质期计算&#xff0c; 保质期日期可选&#xff0c;天 、月、年 2. laravel示例 /*** 保质期计算器* return void*/public function expirationDateCal(){$produce_date $this->request(produce_date); // 生产日期$warranty_date $this->reques…

如何培养对技术的热爱

这篇博文主要针对计算机专业相关的同学&#xff0c;对于理工科专业的同学有一定的借鉴意义&#xff0c;对于其他专业的同学&#xff0c;还请自行取舍。 背景 初学计算机&#xff0c;可能并不是每个人都能对其产生兴趣&#xff0c;更不要说从其中获得快乐。对于如何培养兴趣&a…