上海网站制作优化,免费舆情网站直接打开,网站备案后换空间,怎么建一个购物网站71.简化路径 思路#xff1a;
对于给定的字符串#xff0c;先根据/分割成一个由若干字符串组成的列表#xff0c;记为names#xff0c;根据题意names中包含的字符串只能是以下几种#xff1a;
空字符串一个点两个点只包含英文字母、数字或_的目录名
对于空字符串和一个…71.简化路径 思路
对于给定的字符串先根据/分割成一个由若干字符串组成的列表记为names根据题意names中包含的字符串只能是以下几种
空字符串一个点两个点只包含英文字母、数字或_的目录名
对于空字符串和一个点实际上不需要处理因为空字符串没有任何含义一个点表示当前目录本身无需切换目录
对于两个点或目录名使用一个栈来维护路径中的每个目录名当遇到两个点时需要将目录切换到上一级因此只要栈不为空就弹出栈顶的元素遇到目录名就放入栈中
遍历元素完成上述操作在所有操作完成后将从栈底到栈顶的字符串用/进行连接再在最前面加上/表示根目录
class Solution {public String simplifyPath(String path) {String[] names path.split(/); //以/分割得到多个字符DequeString stack new ArrayDequeString();for(String name : names){if(...equals(name)){if(!stack.isEmpty()){stack.pollLast();}}else if(name.length() 0 !..equals(name)){stack.offerLast(name);}}StringBuilder builder new StringBuilder();if(stack.isEmpty()){builder.append(/);}else{while(!stack.isEmpty()){builder.append(/);builder.append(stack.pollFirst()); //获取对头元素}}return builder.toString();}
}