# 算法系列——Simplify Path

xiaoxiao2021-02-28  8

## 题目描述

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

## 解题思路

public class Solution { public String simplifyPath(String path) { if(path==null||path.length()==0) return null; Stack<String> ss=new Stack<String>(); int i=0; int len=path.length(); while(i<len){ //跳过'/'字符 while(i<len&&path.charAt(i)=='/') i++; //记录字符 String temp=""; while(i<len&&path.charAt(i)!='/') temp+=path.charAt(i++); if("..".equals(temp)&&!ss.isEmpty()) ss.pop(); else if(!"".equals(temp)&&!".".equals(temp)&&!"..".equals(temp)){ ss.push(temp); } } if(ss.isEmpty()) return "/"; StringBuilder sb=new StringBuilder(); for(String str:ss) sb.append("/").append(str); return sb.toString(); }