广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++怎么简化路径
  • 203
分享到

C++怎么简化路径

2023-06-20 16:06:48 203人浏览 安东尼
摘要

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

这篇文章主要介绍“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++怎么简化路径”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: C++怎么简化路径

本文链接: https://www.lsjlt.com/news/298280.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • C++怎么简化路径
    这篇文章主要介绍“C++怎么简化路径”,在日常操作中,相信很多人在C++怎么简化路径问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么简化路径”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!Simpl...
    99+
    2023-06-20
  • C++实现LeetCode(71.简化路径)
    [LeetCode] 71.Simplify Path 简化路径 Given an absolute path for a file (Unix-style), simplify i...
    99+
    2022-11-12
  • C语言怎么遍历邻接表简单路径
    这篇“C语言怎么遍历邻接表简单路径”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言怎么遍历邻接表简单路径”文章吧。题目:...
    99+
    2023-07-01
  • C#相对路径绝对路径的问题怎么解决
    这篇文章主要介绍“C#相对路径绝对路径的问题怎么解决”,在日常操作中,相信很多人在C#相对路径绝对路径的问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#相对路径绝对路径的问题怎么解决”的疑惑有所...
    99+
    2023-06-18
  • 如何简化设置php项目路径
    本文操作环境:windows10系统、php 7、thinkpad t480电脑。下面是简化php项目路径的具体设置,能兼容所有的操作系统,一起来看下吧。header("Content-type:text/html;charset...
    99+
    2019-03-13
    php 项目 路径
  • C++的最短路径怎么计算
    这篇文章主要介绍“C++的最短路径怎么计算”,在日常操作中,相信很多人在C++的最短路径怎么计算问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++的最短路径怎么计算”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-17
  • C#中怎么获取相对路径
    C#中怎么获取相对路径,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C#获取相对路径1.获取和设置当前目录的完全限定路径。string str =&nb...
    99+
    2023-06-18
  • C#中怎么获取当前路径
    本篇文章给大家分享的是有关C#中怎么获取当前路径,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C#获取当前路径的方法如下: System.Diagnostics.Process...
    99+
    2023-06-17
  • C++中怎么获取当前路径
    C++中怎么获取当前路径,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.以下代码来自CSDN 2004 VC编程经验总结. {  &nbs...
    99+
    2023-06-17
  • GoJava算法之简化路径实例详解
    目录简化路径方法一:栈(Java)方法二:标准库(Go)简化路径 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/'...
    99+
    2022-11-13
  • win7 c盘存储路径怎么更改
    本篇内容主要讲解“win7 c盘存储路径怎么更改”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“win7 c盘存储路径怎么更改”吧!win7c盘存储路径更改教程首先在开始菜单中打开个人文件夹,如图...
    99+
    2023-07-01
  • Java中怎么获取路径的绝对路径和相对路径
    今天小编给大家分享一下Java中怎么获取路径的绝对路径和相对路径的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言:在纯 J...
    99+
    2023-06-29
  • thinkPHP如何配置虚拟域名简化URL路径
    这篇文章主要介绍thinkPHP如何配置虚拟域名简化URL路径,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的开发环境。二、WampServer,...
    99+
    2023-06-14
  • 怎么把C#安装路径写入注册表
    这篇文章主要讲解了“怎么把C#安装路径写入注册表”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么把C#安装路径写入注册表”吧!如何将C#安装路径写入注册表的提问安装程序如将项目的安装路径写...
    99+
    2023-06-17
  • C++怎么求二叉树的最大路径和
    本篇内容主要讲解“C++怎么求二叉树的最大路径和”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么求二叉树的最大路径和”吧!求二叉树的最大路径和Given a non-empty...
    99+
    2023-06-20
  • C++怎么查找字串的连接最长路径
    这篇文章主要讲解了“C++怎么查找字串的连接最长路径”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++怎么查找字串的连接最长路径”吧!题目描述给定n个字符串,请对n个字符串按照字典序排列。...
    99+
    2023-06-19
  • C#图表算法之最短路径怎么实现
    本篇内容主要讲解“C#图表算法之最短路径怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#图表算法之最短路径怎么实现”吧!从一个顶点到达另一个顶点的成本最小的路径。我们采用一个一般性的模...
    99+
    2023-06-30
  • 怎么引用html绝对路径与相对路径
    本篇内容介绍了“怎么引用html绝对路径与相对路径”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、..\...
    99+
    2022-10-19
  • C++路径中./、../、/指的是什么意思
    这篇文章将为大家详细讲解有关C++路径中./、../、/指的是什么意思,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。"./":代表目前所在的目录。" . ./"代表...
    99+
    2023-06-21
  • java遗传算法路径优化怎么实现
    要实现Java遗传算法路径优化,您可以按照以下步骤进行: 定义遗传算法的基本元素:染色体、个体、种群等。染色体表示一条路径,个体...
    99+
    2023-10-22
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作