zoukankan      html  css  js  c++  java
  • leetcode

    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".
    class Solution {
    public:
        std::string simplifyPath(std::string path) {
    		std::vector<std::string>   nameVect;
    		std::string name;
    		path.push_back('/');
    		for(int i=0;i<path.size();i++)
    		{
    			if(path[i]=='/'){
    				if(name.size()==0)continue;
    				if(name==".."){
    					if(nameVect.size()>0)nameVect.pop_back();
    				}else if(name=="."){
    				}else{          
    					nameVect.push_back(name);
    				}
    				name.clear();
    			}else{
    				name.push_back(path[i]);
    			}
    		}
    		std::string result;
    		if(nameVect.empty())return "/";
    		for(int i=0;i<nameVect.size();i++){
    			result.append("/"+nameVect[i]);
    		}
    		return result;
    	}
    };


  • 相关阅读:
    socket
    netstat
    列表
    突然发现不会写代码了
    算法资源
    bit位操作
    排序算法
    连续子数组最大和
    books
    凸优化
  • 原文地址:https://www.cnblogs.com/yfceshi/p/6855871.html
Copyright © 2011-2022 走看看