71. 简化路径

1.格式遵循

一个点(.)表示当前目录本身;
两个点 (..) 表示将目录切换到上一级(指向父目录);
任意多个连续的斜杠(即,’//‘)都被视为单个斜杠 ‘/‘ ;
任何其他格式的点(例如,’…’)均被视为文件/目录名称。
始终以斜杠 ‘/‘ 开头。
两个目录名之间必须只有一个斜杠 ‘/‘ 。
最后一个目录名(如果存在)不能 以 ‘/‘ 结尾。
此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 ‘.’ 或 ‘..’)。

2. 求解

创建一个栈只进目录名称,遇到”..”就弹栈,遇到”.”不操作,通过循环添加目录名到输出字符串,如果栈中没有数据就添加一个根目录

  1. for i in stack.iter() {
  2. s.push('/');
  3. s.push_str(i);
  4. }
  5. if s.len() == 0 {
  6. s.push_str("/");
  7. }