您的位置:首页 > 编程语言 > Java开发

LeetCode71 Simplify Path java题解

2015-07-01 08:11 465 查看
题目:

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

For example,

path =
"/home/"
, =>
"/home"


path =
"/a/./b/../../c/"
, =>
"/c"

题解:
解题思路:这题是简化目录,每一级目录前面都有一个斜杠,我可以首先对斜杠进行分割,分割之后得到的结果无外乎4种情况:正常目录名称,空字符,".",".."。对于“.”和空字符我们忽略它,对于正常的目录名称我们直接压入栈,对于"..",我们把栈顶元素出栈。通过这些处理之后,如果栈为空我们就返回根目录,如果栈不为空我们就逐个出栈并在每个元素前面加一个斜杠,最先出的位于路径的最后面。

代码:

import java.sql.Array;
import java.util.Stack;

public class LeetCode71_SimplifyPath {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String input="/a/./b/../../c/";
System.out.println(simplifyPath(input));

}

public static String simplifyPath(String path) {

String[] pathArray=path.split("/");
int length=pathArray.length;
Stack< String> stack=new Stack<>();
String result="";
for(int i=0;i<length;i++)
{
if(pathArray[i].equals("")||pathArray[i].equals("."))
{}
else if(pathArray[i].equals(".."))
{
if(!stack.isEmpty())
{
stack.pop();
}

}
else {
stack.push(pathArray[i]);
}
}
if(stack.isEmpty())
return "/";
while(!stack.isEmpty())
{
result="/"+stack.pop()+result;
}

return result;

}

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