71. 简化路径

原题链接

class Solution {
    public String simplifyPath(String path) {
        // 用栈保存路径
        Deque<String> stack = new LinkedList<>();
        for (String s : path.split("/")) {
            // 返回上层
            if (s.equals("..")) {
                if (!stack.isEmpty()) {
                    stack.pop();
                }
            } else if (!s.equals(".") && !s.isEmpty()) {
                // 新的下级目录
                stack.push(s);
            }
        }
        StringBuilder sb = new StringBuilder();
        // 从栈底开始遍历
        while (!stack.isEmpty()) {
            sb.append("/").append(stack.removeLast());
        }
        if (sb.length() == 0) {
            return "/";
        }
        return sb.toString();
    }
}
class Solution {
   public String simplifyPath(String path) {
        StringBuilder res = new StringBuilder();
        StringBuilder name = new StringBuilder();
        if (path.charAt(path.length() - 1) != '/') path = path + "/";
        for (int i = 0; i < path.length(); i++) {
            char c = path.charAt(i);
            if (c != '/') name.append(c);
            else {
                String nameStr = name.toString();
                if (nameStr.equals("..")) {
                    while (!res.isEmpty() && res.charAt(res.length() - 1) != '/') res.deleteCharAt(res.length() - 1);
                    if (!res.isEmpty()) res.deleteCharAt(res.length() - 1);
                } else if (!nameStr.equals(".") && !nameStr.isEmpty()) {
                    res.append("/").append(nameStr);
                }
                name = new StringBuilder();
            }
        }
        if (res.isEmpty()) return "/";
        return res.toString();
    }
}
posted @   Eiffelzero  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示