您的位置:首页 > 其它

Leetcode71- Simplify Path

2017-12-28 10:23 477 查看
1. 题目:

给定一个Unix系统下的路径,简化这个路径。
如 /home/ ,简化后为 /home
如 /a/./b/../../c/ ,简化后为 /c

2. 思路:

这还是一个入栈出栈匹配问题
构造无效字符集合 = {"",".",".."}
将字符串split成字符串数组
遍历字符串数组{
如果元素等于“..”且栈不为空

出栈一个元素

如果元素不在无效字符内

入栈当前元素
}
构造返回值,记得考虑空值的情况
用这个思路去跑一下测试用例

/home/

/...

/a/./b/../../c/

代码:

public static String simplifyPath(String path) {
String[] a = path.split("/");
Set skip = new HashSet(Arrays.asList("..",".",""));
Stack<String> stack = new Stack<String>();

for(int i = 0;i <a.length; i++){
if(a[i].equals("..") && !stack.isEmpty())
stack.pop();
else if(!skip.contains(a[i]))
stack.push(a[i]);

}

// String res = "";
// for (String dir : stack) res = "/" + dir + res;
// return res.isEmpty() ? "/" : res;

StringBuffer sb = new StringBuffer();
//遍历这个栈,构造返回值
while(!stack.isEmpty()){
sb = sb.append("/" + stack.pop());
}

return sb.toString().isEmpty()?"/":sb.toString();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: