一天一道LeetCode

本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github

欢迎大家关注我的新浪微博,我的新浪微博

欢迎转载,转载请注明出处

(一)题目

Given an absolute path for a file (Unix-style), simplify it.

For example,

path = “/home/”, => “/home”

path = “/a/./b/../../c/”, => “/c”

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”.

(二)解题

题目大意:给定一个绝对路径,简化路径

注意一下几点:

1、“..”表示跳到上一层目录

2、“.”表示当前目录

3、“////”多个/当一个处理

在这里,我们可以利用stack来处理,“..”则把栈顶元素弹出,“.”则不作处理,其他的表示目录的名字就直接压栈。

具体思路可以看代码:

class Solution {
public:
    string simplifyPath(string path) {
        stack<string> pathStack;//存放目录
        path+="/";//避免处理边界,即/a这种情况
        string temp = "";//用作临时string
        for(int i = 0 ; i< path.length() ;)
        {
            if(path[i] == '/')
            {
                if(temp=="..") {//返回上一层目录
                    if(!pathStack.empty()) pathStack.pop();//如果非空则弹出,为空就不做处理
                }
                else if(temp=="."|| temp =="") {}//不做处理,当前目录
                else  pathStack.push(temp);//正常的目录
                while(i<path.length()&&path[i]=='/') i++;//跳过连续的‘/’
                temp = "";//temp初始化
            }
            else
            {
                temp+=path[i++];
            }
        }
        string ret;
        if(pathStack.empty()) ret = "/";//为空时直接输出
        else {
            while(!pathStack.empty())//非空则按格式输出
            {
                string eachPath = pathStack.top();
                pathStack.pop();
                ret = "/"+eachPath + ret;
            }
        }
        return ret;
    }
};

最新文章

  1. php之jquery
  2. JSON例子异常分析
  3. bug_ _ _常见的bug??
  4. 揣摩实现一个ioc容器需要做的事情
  5. 【Python】Python XML 读写
  6. POJ_1631_Bridging_Signals_(动态规划,LIS)
  7. .NET,你真的 知道了吗
  8. iOS 语音识别使用讯飞报错
  9. 64bit ubuntu14.04编译PlatinumKit出现的arm-linux-androideabi-g++: not found错误解决方法
  10. SPI模式下MCU对SD卡的控制及操作命令
  11. 深入剖析Redis系列:Redis数据结构与全局命令概述
  12. python联系-迭代器
  13. python3 集合set
  14. tab 页形式展现多张报表
  15. Hacked VisualSVN Server by PHP to allow user change password
  16. H - Farey Sequence
  17. python的一些遗漏用法
  18. c++——深拷贝和浅拷贝
  19. Mysql查看建表语句以及修改引擎
  20. 微信跳一跳,Python辅助自动跳程序

热门文章

  1. spark on yarn 运行问题记录
  2. 验证码识别之w3cschool字符图片验证码(easy级别)
  3. Node.js 模块
  4. env-cmd 从文件读取配置变量
  5. 从0到1:制作你的苹果podcast(播客)
  6. 制作pypi上的安装库
  7. 使用QGIS将文本坐标转换为矢量文件
  8. [安全]Back_Track_5 vm 版安装和使用
  9. 会声会影小成果分享(那段青春岁月)——校学习部宣传视频制作&amp;生日祝福
  10. Android Demo手机获取验证码