简化路径

5、简化路径

给定一个文档(Unix-style)的完全路径,请将路径简化

示例:

PATH="/home/"=>"/home"

*PATH="/a/./b/../../c/"=>"/c"

边界情况:

你是否考虑了 路径 = "/../" 的情况?
在这种情况下,你需返回 "/" 。
此外,路径中也可能包含多个斜杠 '/' ,如 "/home//foo/" 。
在这种情况下,你可忽略多余的斜杠,返回 "/home/foo"

Solution:

class Solution {
public:
    string simplifyPath(string path) {
        string res;
        vector<string>temp;
        vector<string>pathTemp;
        int pathWordSize=0;
        string str;
        int word=0;
        int i;
        for(i=0;i<path.size();i++){
            if(path[i]=='/'){
                if(word){
                    str=path.substr(i-pathWordSize,pathWordSize);
                    temp.push_back(str);
                    pathWordSize=0;
                    word=0;
                }
                else
                    continue;
            }
            else{
                word=1;
                pathWordSize++;
            }
        }
        if(word){
            str=path.substr(i-pathWordSize,pathWordSize);
            temp.push_back(str);
        }
        for(i=0;i<temp.size();i++){
            if(temp[i]=="."){
                continue;
            }
            else if(temp[i]==".."){
                if(pathTemp.size()>0)
                    pathTemp.pop_back();
                else
                    continue;
            }
            else{
                pathTemp.push_back(temp[i]);
            }
        }
        if(pathTemp.size()==0){
            res+='/';
            return res;
        }
        for(i=0;i<pathTemp.size();i++){
            res=res+'/'+pathTemp[i];
        }
        return res;
    }
};

思路:

这道题还是蛮难的,主要的思路还是跟提取字符串中的单词差不多,用到了栈的思想。首先对path进行处理,提取出有用的词,主要就是用’/‘分割字符串,连续的’/'忽略,然后对提取出的词进行处理,如果是.则不做处理,如果是..则出栈一个字符,最后将剩下的词处理成字符串返回就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值