力扣---简化路径

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

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

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

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

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

示例 1:

输入:path = "/home/"
输出:"/home"
解释:注意,最后一个目录名后面没有斜杠。 

示例 2:

输入:path = "/../"
输出:"/"
解释:从根目录向上一级是不可行的,因为根目录是你可以到达的最高级。

示例 3:

输入:path = "/home//foo/"
输出:"/home/foo"
解释:在规范路径中,多个连续斜杠需要用一个斜杠替换。

示例 4:

输入:path = "/a/./b/../../c/"
输出:"/c"

 思路:栈

一句话解释: 栈解决,把当前目录压入栈中,遇到..弹出栈顶,最后返回栈中元素.

作者:画图小匠
链接:https://leetcode.cn/problems/simplify-path/solutions/2376923/javapython3cshuang-duan-dui-lie-jian-hua-ehvw/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

代码:

class Solution {
public:
    string simplifyPath(string path) {
        string res;
        vector<string> temp_res;
        int len = path.size();
        int start = 0;
        int end = 0;
        for(int i = 0 ; i < len ; i++){
            if(path[i] == '/'){
                continue;
            }
            else{
                if((i==len-1 && path[i]=='.') || (i < len - 1 && path[i] == '.' && path[i+1] == '/'))
                    continue;
                else if((i+2==len && path[i] == '.' && path[i+1] == '.') || (i+2 < len && path[i] == '.' && path[i+1] == '.' && path[i+2] == '/')){
                    if(temp_res.size() != 0){
                        temp_res.pop_back();
                    }
                    i++;
                }
                else{
                    string tmp;
                    while(i < len && path[i] != '/'){
                        tmp.push_back(path[i]);
                        i++;
                    }
                    temp_res.push_back(tmp);
                }
            }
        }
        for(string& name : temp_res){
            res = res + '/' + name;
        }
        if(temp_res.size()==0)
            res = '/';
        return res;
    }
};

相关推荐

  1. -简化路径

    2024-03-12 00:04:02       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-12 00:04:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-12 00:04:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-12 00:04:02       82 阅读
  4. Python语言-面向对象

    2024-03-12 00:04:02       91 阅读

热门阅读

  1. 【美团20240309笔试算法题】小美的数组询问

    2024-03-12 00:04:02       43 阅读
  2. 【设计模式】工厂模式与抽象工厂模式

    2024-03-12 00:04:02       42 阅读
  3. FPGA TestBench编写学习

    2024-03-12 00:04:02       42 阅读
  4. Ubuntu 22.04 server 安装GNOME/XFCE/KDE桌面环境

    2024-03-12 00:04:02       44 阅读
  5. JVM相关面试题及常用命令参数

    2024-03-12 00:04:02       44 阅读
  6. 力扣代码学习日记七

    2024-03-12 00:04:02       43 阅读
  7. Latex 超长矩阵如何处理显示问题

    2024-03-12 00:04:02       58 阅读