栈
1.思路:在栈中只要把 / 的下标进栈和出栈就可以计算字符串中的字母,获取字符串中的字母用substring()函数根据 两个 / 的下标来确定区间。之后把符合的字母加入集合中。之后要判断值为“. ."时要删除集合中最后一个元素。之后用for循环拼接简化路径。
- class Solution {
- public String simplifyPath(String path) {
- //将输入值最后加入一个/,防止输入值最后没有/进行数据截取。
- path+="/";
- String s1="";
- //接收简要路径的集合
- ArrayList
li=new ArrayList<>(); - //栈来进行/的进栈操作来判断字符串中的规范字母值
- Stack
st=new Stack <>(); - //先进栈开头的/
- st.push(0);
- for(int i=1;i
- //判断字符为‘/‘时要把开头的下标出栈,在将当前的/的下标进行进栈操作
- if(path.charAt(i)=='/'){
- int j=st.pop();
- st.push(i);
- //判断两个/中是否有字母
- if(i-j>1){
- //用substring来进行截取字符串
- String d=path.substring(j+1,i);
- //用于判断三个.和三个以上的.的路径
- String o=path.substring(j+1,j+3);
- //如果截取的字符串为“..”。要把集合中最后一位的元素删除,如果集合没有元素就跳过
- if(d.equals("..")){
- if(li.isEmpty()){
- continue;
- }
- li.removeLast();
- continue;
- //如果截取的元素为一个.或者为三个.以上时跳过就好了
- }else if(d.equals(".")||(o.equals(".")&&i-j>3)){
- continue;
- //截取的部分为字母时就添加到集合中
- }else{
- li.add(d);
- }
- }
- }
- }
- //遍历集合拼接简化的路径
- for(int i=0;i
- s1+="/"+li.get(i);
- }
- //特殊情况,当集合中没有元素要进行特殊的处理。
- if(li.size()==0){
- s1="/";
- }
- return s1;
- }
- }
-
相关阅读:
软考高级信息系统项目管理师系列论文三:论信息系统项目的进度管理
第三课 哈希表、集合、映射
90%测试人不知道的快速入门秘籍——接口自动化神器 apin(一)
Android入门第30天-Android里的Toast的使用
Python语言学习实战-内置函数sorted()的使用(附源码和实现效果)
什么是好用的HR人才测评?
基于Matlab分析的电力系统可视化研究
每周一篇论文-规划算法Jump Point Search-Online Graph Pruning for Pathfinding on Grid Maps
小白CNN入门指导
亲测解决no module named ‘PyQt5.QtCore‘
-
原文地址:https://blog.csdn.net/AnDanXingKo/article/details/136465802