LeetCode71-简化路径-模拟-字符串

原题链接
在这里插入图片描述
在这里插入图片描述

Note:

大概意思就是个Linux那种命令目录的操作
给一个路径,题保证是合法的,然后让我给简化一下,把重复的操作给干掉,看最终到了哪一个目录里面

每次以 / 表示一个name读到了头了, 然后判断这个名字

如果是俩点,就说明要返回上一级目录,就给res里面回退一个名字,然后再删一个 / (我们每次加的操作是/name)

如果是一个点或者是两个 / 挨着(也就是name为空)那么就啥也不干

那么其他的就是加上 /name

代码如下:
class Solution {
public:
    string simplifyPath(string path) {
        string res, name;
        if(path.back() != '/')  path += '/';
        for(auto c : path){
            if(c != '/')    name += c;
            else{
                if(name == ".."){
                    while(res.size() && res.back() != '/')  res.pop_back();
                    if(res.size())  res.pop_back();
                }
                else if(name != "." && name != "")
                    res += "/" + name;
                name.clear();
            }
        }

        if(res.empty()) res += "/";
        return res;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值