简化Unix风格的路径,需要考虑的包括“/../”,“//”,“/./”等情况
输入描述:
一个字符串,表示Unix风格的路径
输出描述:
简化后的Unix风格的路径
示例1:
输入:"/home/"
输出:"/home"
示例2:
输入:"/a/./b/../../c/"
输出:"/c"
分析:
“..”表示返回路径的上级目录(如果当前是根目录则不处理),“.”表示当前目录。
使用栈来记录路径名。在处理字符串路径的过程中,遵循以下条件:
(1)重复连续的“/”,只需处理一个即可,即跳过重复连续出现的多个“/”;
(2)如果路径名不为“.”或“..”,将记录的字符串入栈;
(3)如果路径名是“..”且栈不为空,则需要出栈,否则无需处理。
在遍历完字符串之后,逐个取出栈中元素,用“/”分隔并拼接起来,注意:取出的元素是从后往前进行拼接的。
代码如下: