「算法设计」模拟Linux文件目录的简单规则
2021/9/11 7:06:30
本文主要是介绍「算法设计」模拟Linux文件目录的简单规则,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
模拟Linux文件目录的简单规则
规则1 cd a -> /a
规则2 cd … -> cd …
规则3 pwd -> 打印目录
大致这三个切换问题的实现,和大家分享
使用stack栈实现,
cd x 就入栈,cd … 就出栈,栈为空时就打印 /
注意pwd需要在前面补上 /
package com.nowcoder.seckill.sort; import java.util.*; public class Linux { public static void main(String[] args) { // 使用栈进行 pwd Scanner sc = new Scanner(System.in); int time = 1; int n = sc.nextInt(); Deque<String> stack = new ArrayDeque<>(); //stack.add("/");// 添加根目录 while (n >= time){ String[] order = sc.nextLine().split("\\s+"); if(stack.isEmpty()){ // 如果栈空了 if("cd".equals(order[0])){ if("..".equals(order[1])){ // cd .. 出栈 System.out.println("/"); }else { // cd x 入栈 stack.addFirst("/" + order[1]); System.out.println(stack.peekFirst()); } } }else { // 如果栈不空 if("cd".equals(order[0])){ if("..".equals(order[1])){ // cd .. 出栈 stack.removeFirst(); System.out.println(stack.peekFirst()); // 栈顶元素 }else { // cd x 入栈 stack.addFirst("/" + order[1]); System.out.println(stack.peekFirst()); // 栈顶元素 } } } // 遇到 pwd,遍历 StringBuffer sb = new StringBuffer(); if ("pwd".equals(order[0])){ for (String s : stack){ sb.append(s); } sb.reverse().substring(0, sb.length()); String s = sb.substring(0, sb.length() - 1); System.out.println("/" + s); } time++; } } }
这篇关于「算法设计」模拟Linux文件目录的简单规则的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南