栈
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;
- }
- }
-
相关阅读:
【探索AI】Sora - 探索AI视频模型的无限可能
字符串拷贝
【我的渲染技术进阶之旅】你知道数字图像处理的标准图上的女孩子是谁吗?背后的故事你了解吗?为啥这张名为Lenna的图会成为数字图像处理的标准图呢?
目的:ubuntu配置使用opengl - 初探-创建一个空窗口
Qt右键菜单
docker网络及部署集群和打包镜像
AWS 中文入门开发教学 37- 连接MySQL - phpMyAdmin 管理工具
Ubuntu系统下创建虚拟AP和STA扫描/关联/认证/ping
PAT 1017 Queueing at Bank
SpringBoot整合Mongodb
-
原文地址:https://blog.csdn.net/AnDanXingKo/article/details/136465802