笔试题——Unix路径简化
来源:互联网 发布:腾讯视频 for mac官方 编辑:程序博客网 时间:2024/05/29 07:04
简化Unix风格的路径,需要考虑的包括“/../”,“//”,“/./”等情况
输入描述:
一个字符串,表示Unix风格的路径
输出描述:
简化后的Unix风格的路径
示例1:
输入:"/home/"
输出:"/home"
示例2:
输入:"/a/./b/../../c/"
输出:"/c"
分析:
“..”表示返回路径的上级目录(如果当前是根目录则不处理),“.”表示当前目录。
使用栈来记录路径名。在处理字符串路径的过程中,遵循以下条件:
(1)重复连续的“/”,只需处理一个即可,即跳过重复连续出现的多个“/”;
(2)如果路径名不为“.”或“..”,将记录的字符串入栈;
(3)如果路径名是“..”且栈不为空,则需要出栈,否则无需处理。
在遍历完字符串之后,逐个取出栈中元素,用“/”分隔并拼接起来,注意:取出的元素是从后往前进行拼接的。
代码如下:
import java.util.Scanner;import java.util.Stack;public class SimplePath {public static void main(String[] args) {Scanner in = new Scanner(System.in);String path = in.nextLine();String simplePath = "";Stack<String> stack = new Stack<String>();for(int i=0;i<path.length();i++){String name="";while(i<path.length() && path.charAt(i)=='/')i++;//该操作跳过斜线'/'while(i<path.length() && path.charAt(i)!='/')name += path.charAt(i++);//记录路径名,也包括'.'和'。。'if(!name.equals(".") && !name.equals("..")){stack.push(name);}if(!stack.isEmpty() && name.equals(".."))stack.pop();//如果当前文件名为“..”,表示退到上一层目录,需弹出栈}if(stack.isEmpty())System.out.print("/");while(!stack.isEmpty()){simplePath = "/"+stack.peek()+simplePath;stack.pop();}System.out.println(simplePath);}}
阅读全文
0 0
- 笔试题——Unix路径简化
- 搜狐笔试题——Unix简化路径
- 搜狐2017笔试题----Unix路径简化
- Unix路径简化(模拟题)
- [LeetCode]—Simplify Path 简化路径表达式
- 简化路径
- 简化路径
- 简化路径
- [C++]LeetCode: 117 Simplify Path (简化Unix路径 list双向链表)
- 京东笔试题-激光炮(分析转换简化问题)
- 简化页面访问路径
- LintCode-简化路径
- lintcode-简化路径-421
- 71.简化路径
- 文件路径简化-堆栈
- 简化路径-LintCode
- 城市路径数——华为笔试 2013.08.31
- 面试OR笔试33——矩阵中的路径
- java有没有内存泄漏与N+1问题
- 深度学习DeepLearning.ai系列课程学习总结:14. Tensorflow入门
- 编写Linux系统下Daemon程序的方法步骤
- C++ list学习
- 功能强大且抗DDoS的iptables脚本
- 笔试题——Unix路径简化
- stm32f103x建工程错误问题
- 回文字符串
- python总结(二):控制台中文乱码的解决办法
- jQuery实现固定导航栏效果
- 用Vue搭建一个应用盒子(三):音乐播放器
- 201612-1中间数
- 视觉系统选型及系统搭建—工业相机篇
- 【C++】单链表的增删查改实现