本文共 2270 字,大约阅读时间需要 7 分钟。
方案一:不考虑三个以上的点相连作为文件名
public class Solution { public String simplifyPath(String path) { char[] paths = path.toCharArray(); Stack方案二·:考虑三个以上的点相连作为文件名 我们用spilt来分割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; } }}
public class Solution { public String simplifyPath(String path) { String[] split = path.split("/"); Stackstack = 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/