力扣 71 简化路径

发布时间:2024年01月24日

在这里插入图片描述
在这里插入图片描述
一开始没看懂题目,所以一些典型的测试用例靠提交来获取(不断试错)/(ㄒoㄒ)/~~在这里插入图片描述
弄清楚几种情况就行了

返回上一级/a/。。/c/c
当前目录/a/。/c//a/c
重复/a//c//a/c
含点的文件名/a/。ccc。//a/。ccc。
含点的文件名/a/。.。cc。。//a/。。ccc。。
含点的文件名/a/。。。//a/。。。
含点的文件名/a/。.。。cc。。。//a/。。。ccc。。。
普通文件名/a/c//a/c

代码:

class Solution {
public:
    string simplifyPath(string path) {
        string res="";
        int i=1;
        while(i<path.size()){
            if(path[i]=='/') i++;
            else if(path[i]=='.'){// .开头
                i++;   
                if(i<path.size() && path[i]=='.'){//  ..开头
                    i++;
                    if(i<path.size()&&path[i]!='/'){//... 或者..其他  格式
                        string temp="..";
                        while(i<path.size()&&path[i]!='/'){
                            temp+=path[i];
                            i++;
                        }
                        res=res+"/"+temp;
                    }
                    else{//..切换到上一级
                        int j=0;
                        for(j;j<res.size();j++)
                            if(res[res.size()-1-j]=='/') break;
                        res=res.substr(0,res.size()-j-1);
                    }
                }
                else{//  测试点 "/.hidden"
                    if(i<path.size() && path[i]!='.' && path[i]!='/'){ //.其他 开头
                        string temp=".";
                        while(i<path.size()  && path[i]!='/'){
                            temp+=path[i];
                            i++;
                        }
                        res=res+"/"+temp;
                    }
                }
            }
            else{//目录  "/hello../world"
                string temp="";  
                while(i<path.size()&&path[i]!='/'){
                    temp+=path[i];
                    i++;
                }
                res=res+"/"+temp;
            }
        }
        if(res.size()==0) return "/";//  测试点"/../"
        return res;
    }
};

在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_61321344/article/details/135738060
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。