LeetCode第71题:简化路径(中等)
- 题目:以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径。请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串。
- 思路一:想到了第65题有效数字的问题,为了练习练习那道题的方法,我选择了状态集的办法。让我想不到的是,目录名竟然还可以包含点(黑人问号脸???),这个点什么时候可以留下,什么时候不能有,研究了半天。。。。终于在我快累死的时候过了。。。。
class Solution {
public int make(char c){
switch(c){
case '.' :return 0;
case '/' :return 1;
default:
return 2;
}
}
public String simplifyPath(String path) {
String res = "";
char[] ans = new char[path.length()];
ans[0]='/';
int state = 0;
int j = 1;
int[][] transfer = new int[][]{
{
1, 0, 2},
{
3, 0, 2},
{
1, 0, 2},
{
2, 0, 2}};
char[] ss = path