首页 > 其他 > 详细

Simplify Path

时间:2014-03-13 07:10:29      阅读:444      评论:0      收藏:0      [点我收藏+]

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

For example,
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"

click to show corner cases.

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
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
class Solution {
public:
    string simplifyPath(string path) {
        string re = "";
        stack <string > sk;
        int i = 0;
        int len = path.length();
        while(i<len)
        {
            if(path[i] == ‘/‘)
            {
                i++;
                continue;
            }
            int j = 0;
             
            while(i+j < len && path[i+j]!= ‘/‘)j++;
             
            string temp = path.substr(i,j);
             
            if(temp == "..")
            {
                if(!sk.empty())
                sk.pop();
                i = i+2;
            }
            else if(temp == "."){
                i++;
                continue;
                }
            else
            {
                i = i +j;
                sk.push(temp);
            }
             
        }
        if(sk.empty())return "/";
        while(!sk.empty())
        {
            string temp = sk.top();
            re = ‘/‘ + temp + re;
            sk.pop();
        }
        return re;
    }
};

  

Simplify Path,布布扣,bubuko.com

Simplify Path

原文:http://www.cnblogs.com/pengyu2003/p/3596269.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!