LeetCode71 Simplify Path java题解
2015-07-01 08:11
465 查看
题目:
Given an absolute path for a file (Unix-style), simplify it.
For example,
path =
path =
题解:
解题思路:这题是简化目录,每一级目录前面都有一个斜杠,我可以首先对斜杠进行分割,分割之后得到的结果无外乎4种情况:正常目录名称,空字符,".",".."。对于“.”和空字符我们忽略它,对于正常的目录名称我们直接压入栈,对于"..",我们把栈顶元素出栈。通过这些处理之后,如果栈为空我们就返回根目录,如果栈不为空我们就逐个出栈并在每个元素前面加一个斜杠,最先出的位于路径的最后面。
代码:
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; } }
相关文章推荐
- Spring3.1新属性管理API:PropertySource、Environment、Profile
- 一个类的产生
- Java编码规范-工业级
- java中的map集合
- 《编程导论(Java)·1.1.2 颠倒的世界(柏拉图法则)》
- JAVA实验第二天
- Java解惑之长整型
- 备忘:javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.h: No trusted certificate found
- JAVA学习笔记之J2SDK主要包介绍 (马士兵 教学视频)
- java基础 之 package import 总结(马士兵 视频教程)
- java初学2
- 使用 Java Debug Interface(JDI)调试多线程应用程序
- 深入 Java 调试体系,第 4 部分: Java 调试接口(JDI)
- 深入 Java 调试体系,第 3 部分: JDWP 协议及实现
- 深入 Java 调试体系,第 2 部分: JVMTI 和 Agent 实现
- java的线程同步
- 为什么JDK中String类的indexof不使用KMP或者Boyer-Moore等时间复杂度低的算法编辑器
- 深入 Java 调试体系: 第 1 部分,JPDA 体系概览
- java线程
- eclipse的历史版本及下载