Java C++题解leetcode1598文件夹操作日志搜集器

让我详细地讲解一下Java C++题解LeetCode 1598文件夹操作日志搜集器的完整攻略。

简介

这是一道LeetCode的题目。题目描述为:假设您正在设计一款简单的奇怪编辑器,每次打开它时,编辑器都会仅显示全部文本中最后一次输入的字符。执行一些操作后,您希望能够查看并恢复到某些之前的状态。为了实现这个功能,您需要设计一个操作日志记录数据结构。该数据结构将保存每个操作(仅三种:下面详细讲解),以及实施该操作时文件夹的实际名称。

题目要求实现一个函数,它将读取操作日志,并返回最后计算机文件夹的名称。

操作类型

题目中的操作有三种。

  • ./: 这个操作表示当前目录,不需要进行任何操作。
  • ../: 这个操作表示返回上一级目录。
  • x/: 这个操作表示进入到x目录。

解题思路

解题的主要思路是建立一个栈来保存目录历史。如果遇到当前目录./,则不做任何处理。如果遇到返回上一级目录../,则弹出栈顶元素。如果遇到进入下一级目录x/,则将目录入栈。

最后栈中剩下的就是最后的目录名称。

实现代码

下面是Java实现代码:

class Solution {
    public String findFolder(String[] logs) {
        Stack<String> stack = new Stack<>();
        for (String log : logs) {
            if (log.equals("./")) {
                // 当前目录,不做任何处理
            } else if (log.equals("../")) {
                // 返回上一级目录
                if (!stack.empty()) {
                    stack.pop();
                }
            } else {
                // 进入下一级目录
                stack.push(log);
            }
        }
        StringBuilder sb = new StringBuilder();
        for (String s : stack) {
            sb.append('/');
            sb.append(s);
        }
        return sb.length() == 0 ? "/" : sb.toString();
    }
}

下面是C++实现代码:

class Solution {
public:
    string findFolder(vector<string>& logs) {
        stack<string> st;
        for (string log : logs) {
            if (log == "./") {
                // 当前目录,不做任何处理
            } else if (log == "../") {
                // 返回上一级目录
                if (!st.empty()) {
                    st.pop();
                }
            } else {
                // 进入下一级目录
                st.push(log);
            }
        }
        string ans = "";
        while (!st.empty()) {
            ans = "/" + st.top() + ans;
            st.pop();
        }
        return (ans == "") ? "/" : ans;
    }
};

示例

下面是两条示例:

示例 1:

输入:logs = ["d1/","d2/","../","d21/","./"]

输出:"d1/d21"

解释:第一条操作将进入名为“d1”的目录。第二个操作将进入名为“d2”的目录。然后,第三个操作将返回上一个目录,返回到“d1”。逐步地,我们进入“d21”目录,然后我们执行了操作“./”,没有任何更改。因此,最后的目录名称为“d1/d21”。

示例 2:

输入:logs = ["d1/","d2/","../","../","d21/","./"]

输出:"d21"

解释:第一个操作将进入名为“d1”的目录。然后,我们进入名为“d2”的目录。然后,我们返回上一个目录,回到“d1”。接下来,我们返回到上一个目录,回到初始目录。然后,我们进入名为“d21”的目录,最后我们执行了操作“./”,没有任何更改。因此,最后的目录名称为“d21”。

希望我的解答能够对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java C++题解leetcode1598文件夹操作日志搜集器 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • SpringMVC+Shiro的基本使用及功能介绍

    SpringMVC+Shiro的基本使用及功能介绍 什么是Shiro Shiro是一个强大且易于使用的Java安全框架,它提供了身份验证、授权、加密、会话管理等功能,可以帮助我们快速构建安全的Web应用程序。 SpringMVC集成Shiro SpringMVC集成Shiro可以帮助我们快速构建安全的Web应用程序。以下是SpringMVC集成Shiro的基…

    Java 2023年5月17日
    00
  • java 中断线程的几种方式 interrupt()详解

    Java 中断线程的几种方式 interrupt()详解 在 Java 中,一条线程可以通过另一条线程中断,可以说是线程通信的一种方式。本文将会详细的讲解 Java 中线程中断的几种方式以及如何检测线程是否被中断。 interrupt() 方法 Java 提供了 interrupt() 方法作为一种中断线程的方式,在线程启动后,可以使用该方法将线程设置为中断…

    Java 2023年5月18日
    00
  • Centos7.3下Tomcat8的安装配置教程

    好的!下面是 “Centos7.3下Tomcat8的安装配置教程” 的完整攻略: 安装JDK8 在Centos7.3系统下,使用以下命令安装JDK8: yum install java-1.8.0-openjdk-devel 验证JDK8是否成功安装: java -version 安装Tomcat8 下载Tomcat8的压缩包: wget https://m…

    Java 2023年5月19日
    00
  • JSP 中Session的详解及原理分析

    JSP 中 Session 的详解及原理分析 1. Session 是什么? 在Web应用程序中,Session代表用户会话的信息,它们存储在服务器的内存或磁盘上,以便在整个应用程序中共享。Session 机制使用了有状态的 Web 协议 HTTP ,在客户端与服务器之间建立依赖关系。 2. Session 的使用 2.1 数据的存储 在JSP中存储数据到 …

    Java 2023年6月15日
    00
  • Java实现截取字符串的操作详解

    Java实现截取字符串的操作详解 Java是一种非常流行的编程语言,它内置了许多字符串操作函数,其中截取字符串也是其中一种常用的操作技能。本文旨在详细讲解Java实现截取字符串的操作,并提供两个示例进行说明。 什么是截取字符串? 截取字符串是指从一个字符串中抽取出一个子字符串。例如,有一个字符串“Hello world”,如果我们想要取出“Hello”这个子…

    Java 2023年5月26日
    00
  • Struts2修改上传文件大小限制方法解析

    当我们使用Struts2框架进行文件上传时,有时候会遇到上传的文件大小超过了限制的问题。默认情况下,Struts2上传文件大小限制为2M,如果需要修改文件上传大小限制,则需要进行如下操作: 步骤1:添加struts.xml配置 在struts.xml配置文件中添加以下配置,其中10485760代表文件大小限制为10M。 <interceptors&gt…

    Java 2023年5月19日
    00
  • Java web实现购物车案例

    以下是“Java web实现购物车案例”的完整攻略: 1. 准备工作 首先,我们需要一些工具来实现Java web开发。具体来说,需要安装并配置以下软件:* JDK(Java Development Kit)* Tomcat服务器* Eclipse开发环境* MySQL数据库 2. 数据库设计 购物车需要记录商品和购买数量等信息,因此我们需要在MySQL数据…

    Java 2023年6月15日
    00
  • java 文件名截取方法

    当我们在Java程序中获取到一个文件的完整路径之后,有时候我们需要从该路径中截取出文件名,以便进行后续的一些操作。下面就来讲一下Java中如何进行文件名截取。 方法一:使用File类的getName()方法 File类是Java中提供的一个用于操作文件和目录的类,其中getName()方法可以返回文件名(不包含路径名)。 示例代码: File file = …

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部