力扣面试经典150题——Unix简化路径
2023-12-13 03:47:56
https://leetcode.cn/problems/simplify-path/description/?envType=study-plan-v2&envId=top-interview-150
思路:将串以/分割,判断字符串是…/./其他,进行入栈和出栈,最后留下的就是结果,拼装一下就好了。
三个要点:
第一:字符串的比较统一拿equals来比
第二:队列的遍历一定要拿while,不要用for,除非一开始就拿个变量存下来长度,不然遍历时候长度在变化
第三:split()函数会让空开的地方分割出来空字符串“”
举个栗子:
String s = " a b c";
String[] x = s.split(" ");
for(String unit:x)
System.out.println(unit);
结果是
a
b
c
代码:
class Solution {
public String simplifyPath(String path) {
String[] units = path.split("/");
String ans="";
Deque<String> queue = new LinkedList<>();
for(int i=0;i<units.length;i++){
//System.out.println(units[i]);
if(units[i].equals("")||units[i].equals("."))
continue;
else if(units[i].equals("..")&&queue.size()>0)
queue.removeFirst();
else if(units[i].equals("..")&&queue.size()==0)
continue;
else
queue.addFirst(units[i]);
}
//千万别这么写
// for(int i=0;i<queue.size();i++){
// if(i>=1)ans+="/";
// ans+=queue.peekFirst();
// queue.removeFirst();
// }
List<String> list = new ArrayList<>();
while(queue.size()!=0){
list.add(queue.peekFirst());
queue.removeFirst();
}
for(int i=list.size()-1;i>=0;i--){
ans=ans+"/"+list.get(i);
}
if(ans.equals(""))
ans = "/";
return ans;
}
}
PS:LinkedList的API
文章来源:https://blog.csdn.net/qq_45816864/article/details/134819785
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!