我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++怎么简化路径

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++怎么简化路径

这篇文章主要介绍“C++怎么简化路径”,在日常操作中,相信很多人在C++怎么简化路径问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么简化路径”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Simplify Path 简化路径

Given an absolute path for a file (Unix-style), simplify it.

For example,
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"

click to show corner cases.

Corner Cases:

  • Did you consider the case where path = "/../"?
    In this case, you should return "/".

  • Another corner case is the path might contain multiple slashes '/' together, such as "/home//foo/".
    In this case, you should ignore redundant slashes and return "/home/foo".

这道题让简化给定的路径,光根据题目中给的那一个例子还真不太好总结出规律,应该再加上两个例子 path = "/a/./b/../c/", => "/a/c"和path = "/a/./b/c/", => "/a/b/c", 这样我们就可以知道中间是"."的情况直接去掉,是".."时删掉它上面挨着的一个路径,而下面的边界条件给的一些情况中可以得知,如果是空的话返回"/",如果有多个"/"只保留一个。那么我们可以把路径看做是由一个或多个"/"分割开的众多子字符串,把它们分别提取出来一一处理即可,代码如下:

C++ 解法一:

class Solution {public:    string simplifyPath(string path) {        vector<string> v;        int i = 0;        while (i < path.size()) {            while (path[i] == '/' && i < path.size()) ++i;            if (i == path.size()) break;            int start = i;            while (path[i] != '/' && i < path.size()) ++i;            int end = i - 1;            string s = path.substr(start, end - start + 1);            if (s == "..") {                if (!v.empty()) v.pop_back();             } else if (s != ".") {                v.push_back(s);            }        }        if (v.empty()) return "/";        string res;        for (int i = 0; i < v.size(); ++i) {            res += '/' + v[i];        }        return res;    }};

还有一种解法是利用了C语言中的函数strtok来分隔字符串,但是需要把string和char*类型相互转换,转换方法请猛戳这里。除了这块不同,其余的思想和上面那种解法相同,代码如下:

C 解法一:

class Solution {public:    string simplifyPath(string path) {        vector<string> v;        char *cstr = new char[path.length() + 1];        strcpy(cstr, path.c_str());        char *pch = strtok(cstr, "/");        while (pch != NULL) {            string p = string(pch);            if (p == "..") {                if (!v.empty()) v.pop_back();            } else if (p != ".") {                v.push_back(p);            }            pch = strtok(NULL, "/");        }        if (v.empty()) return "/";        string res;        for (int i = 0; i < v.size(); ++i) {            res += '/' + v[i];        }        return res;    }};

C++中也有专门处理字符串的机制,我们可以使用stringstream来分隔字符串,然后对每一段分别处理,思路和上面的方法相似,参见代码如下:

C++ 解法二:

class Solution {public:    string simplifyPath(string path) {        string res, t;        stringstream ss(path);        vector<string> v;        while (getline(ss, t, '/')) {            if (t == "" || t == ".") continue;            if (t == ".." && !v.empty()) v.pop_back();            else if (t != "..") v.push_back(t);        }        for (string s : v) res += "/" + s;        return res.empty() ? "/" : res;    }};

Java 解法二:

public class Solution {    public String simplifyPath(String path) {        Stack<String> s = new Stack<>();        String[] p = path.split("/");        for (String t : p) {            if (!s.isEmpty() && t.equals("..")) {                s.pop();            } else if (!t.equals(".") && !t.equals("") && !t.equals("..")) {                s.push(t);            }        }        List<String> list = new ArrayList(s);        return "/" + String.join("/", list);    }}

到此,关于“C++怎么简化路径”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C++怎么简化路径

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C++怎么简化路径

这篇文章主要介绍“C++怎么简化路径”,在日常操作中,相信很多人在C++怎么简化路径问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么简化路径”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!Simpl
2023-06-20

C语言怎么遍历邻接表简单路径

这篇“C语言怎么遍历邻接表简单路径”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言怎么遍历邻接表简单路径”文章吧。题目:
2023-07-01

如何简化设置php项目路径

简化设置php项目路径的方法:【header("Content-type:text/html;charset=utf-8");$webrootpath = $_SERVER[‘DOCUMENT_ROOT‘];$easywebroo...】。
2019-03-13

c#怎么获取当前路径

c# 中有三种方法可获取当前路径: environment.currentdirectory、directory.getcurrentdirectory 和 assembly.getexecutingassembly().location。
c#怎么获取当前路径
2024-05-14

C#相对路径绝对路径的问题怎么解决

这篇文章主要介绍“C#相对路径绝对路径的问题怎么解决”,在日常操作中,相信很多人在C#相对路径绝对路径的问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#相对路径绝对路径的问题怎么解决”的疑惑有所
2023-06-18

C++中怎么获取当前路径

C++中怎么获取当前路径,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.以下代码来自CSDN 2004 VC编程经验总结. { CString strPa
2023-06-17

C++的最短路径怎么计算

这篇文章主要介绍“C++的最短路径怎么计算”,在日常操作中,相信很多人在C++的最短路径怎么计算问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++的最短路径怎么计算”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-17

C#中怎么获取相对路径

C#中怎么获取相对路径,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C#获取相对路径1.获取和设置当前目录的完全限定路径。string str = System.Envir
2023-06-18

C#中怎么获取当前路径

本篇文章给大家分享的是有关C#中怎么获取当前路径,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C#获取当前路径的方法如下:1. System.Diagnostics.Proce
2023-06-17

thinkPHP如何配置虚拟域名简化URL路径

这篇文章主要介绍thinkPHP如何配置虚拟域名简化URL路径,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的开发环境。二、WampServer,
2023-06-14

win7 c盘存储路径怎么更改

本篇内容主要讲解“win7 c盘存储路径怎么更改”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“win7 c盘存储路径怎么更改”吧!win7c盘存储路径更改教程1、首先在开始菜单中打开个人文件夹,
2023-07-01

Java中怎么获取路径的绝对路径和相对路径

今天小编给大家分享一下Java中怎么获取路径的绝对路径和相对路径的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言:在纯 J
2023-06-29

c#文件路径引用变量怎么写

在 c# 中,您可以通过字符串插值或 string.format 方法将变量引用到文件路径中。字符串插值使用 ${} 语法,而 string.format 方法需要提供格式字符串和要插入的变量。例如:string filepath = $"
c#文件路径引用变量怎么写
2024-05-14

怎么把C#安装路径写入注册表

这篇文章主要讲解了“怎么把C#安装路径写入注册表”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么把C#安装路径写入注册表”吧!如何将C#安装路径写入注册表的提问安装程序如将项目的安装路径写
2023-06-17

java遗传算法路径优化怎么实现

要实现Java遗传算法路径优化,您可以按照以下步骤进行:定义遗传算法的基本元素:染色体、个体、种群等。染色体表示一条路径,个体表示染色体的具体实例,种群表示多个个体的集合。设计适应度函数:适应度函数用于评估个体的优劣,即路径的长度。路径的长
2023-10-22

网站优化怎么减少所走的路径

小编给大家分享一下网站优化怎么减少所走的路径,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!方法1、一味追求网站美观:国内许多企业的网站一味追求美感:大气、好看、美
2023-06-10

C++怎么求二叉树的最大路径和

本篇内容主要讲解“C++怎么求二叉树的最大路径和”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么求二叉树的最大路径和”吧!求二叉树的最大路径和Given a non-empty bina
2023-06-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录