71. Simplify Path
Given an absolute path for a file(Unix - style), simplify it.
For example,
path = “/home/“, = > “/home”
path = “/a/./b/../../c/“, = > “/c”
题意:
给定一个文件的绝对路径(UNIX样式),简化它,也就是通过一系列转换后,最后所在目录的路径。
思路:
这道题的要求是简化一个Unix风格下的文件的绝对路径。
字符串处理,由于”..”是返回上级目录(如果是根目录则不处理),因此可以考虑用栈记录路径名,以便于处理。需要注意几个细节:
重复连续出现的’/‘,只按1个处理,即跳过重复连续出现的’/‘;
如果路径名是”.”,则不处理;
如果路径名是”..”,则需要弹栈,如果栈为空,则不做处理;
如果路径名为其他字符串,入栈。
最后,再逐个取出栈中元素(即已保存的路径名),用’/‘分隔并连接起来,不过要注意顺序。
1 | //此法是通过string的find_first_of方法查找'/'字符位置,然后截取字符串,再判断字符串的形式,是否入栈,或者出栈,或者不做任何处理 |
1 | //此法是通过string的下标索引,逐个遍历每个字符查找'/'字符位置,然后根据索引直接累加字符到下一个'/'字符处,得到目录字符串,再判断字符串的形式,是否入栈,或者出栈,或者不做任何处理 |
Java Code
1 | class Solution { |