博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leedcode71——简化路径(栈解决)
阅读量:3958 次
发布时间:2019-05-24

本文共 2270 字,大约阅读时间需要 7 分钟。

方案一:不考虑三个以上的点相连作为文件名

public class Solution {
public String simplifyPath(String path) {
char[] paths = path.toCharArray(); Stack
stack = new Stack<>(); for (char c : paths) {
if(c=='/'){
if(stack.isEmpty()){
stack.push(c); }else if(isAlphabet(stack.peek())){
stack.push(c); }else if(stack.peek()=='.'){
stack.pop(); } }else if(c == '.'){
if(stack.peek()=='.'){
stack.pop(); if(stack.size()>1){
stack.pop(); while (stack.peek()!='/'){
stack.pop(); } } }else if(stack.peek()=='/'){
stack.push(c); } }else{
stack.push(c); } } if(stack.peek()=='.'){
stack.pop(); } if(stack.size()>1&&stack.peek()=='/'){
stack.pop(); } StringBuilder stringBuilder = new StringBuilder(); for (Character character : stack) {
stringBuilder.append(character); } return stringBuilder.toString(); } boolean isAlphabet(char c){
if(c!='/'&&c!='.'){
return true; }else{
return false; } }}

在这里插入图片描述

方案二·:考虑三个以上的点相连作为文件名
我们用spilt来分割

public class Solution {
public String simplifyPath(String path) {
String[] split = path.split("/"); Stack
stack = new Stack<>(); for (String s : split) {
if(s.equals("..")){
if(!stack.isEmpty()){
stack.pop(); } }else if(!s.equals(".")&&!s.equals("")){
stack.push(s); } } StringBuilder stringBuilder = new StringBuilder(); for (String s : stack) {
stringBuilder.append("/"); stringBuilder.append(s); } if(stringBuilder.length()==0){
return "/"; } return stringBuilder.toString(); }}

在这里插入图片描述

转载地址:http://solzi.baihongyu.com/

你可能感兴趣的文章
ipcalc
查看>>
网络 linux 禁止 ping
查看>>
ELF 格式详解
查看>>
chromium 使用
查看>>
linux 检测虚拟机类型
查看>>
go - 运行时:内存不足
查看>>
top 使用
查看>>
Linux Netlink通信机制详解
查看>>
rsync 远程同步
查看>>
nano使用
查看>>
c函数
查看>>
linux 链接
查看>>
centos6.x 添加开机启动服务
查看>>
zfs 简单使用
查看>>
linux EXT4格式分区扩容
查看>>
实现 du 命令
查看>>
git revert reset 使用
查看>>
一些比较好的golang安全项目
查看>>
HTTP状态码
查看>>
go语言
查看>>