临沂做商城网站设计,网站设计 线框图 怎么画,网站建设费用 百度文库,海外服务器租赁题目 以 Unix 风格给出一个文件的绝对路径#xff0c;你需要简化它。或者换句话说#xff0c;将其转换为规范路径。 在 Unix 风格的文件系统中#xff0c;一个点#xff08;.#xff09;表示当前目录本身#xff1b;此外#xff0c;两个点 #xff08;…#xff09; 表…题目 以 Unix 风格给出一个文件的绝对路径你需要简化它。或者换句话说将其转换为规范路径。 在 Unix 风格的文件系统中一个点.表示当前目录本身此外两个点 … 表示将目录切换到上一级指向父目录两者都可以是复杂相对路径的组成部分。 请注意返回的规范路径必须始终以斜杠 / 开头并且两个目录名之间必须只有一个斜杠 /。最后一个目录名如果存在不能以 / 结尾。此外规范路径必须是表示绝对路径的最短字符串。 解答
public String simplifyPath(String path) {if (path null) {return /;}path path.trim();if (path.isEmpty()) {return /;}StackString stack new Stack();String[] fields path.split(/);for (String field : fields) {field field.trim();if (field.isEmpty()) {continue;}switch (field) {case .:break;case ..:if (!stack.isEmpty()) {stack.pop();}break;default:stack.push(field);break;}}StringBuilder sb new StringBuilder();while (!stack.isEmpty()) {sb.insert(0, stack.pop()).insert(0, /);}if (sb.length() 0) {sb.append(/);}return sb.toString();
}要点 本题比较简单按照题目的要求利用JDK提供的Stack和StringBuilder即可实现。 注意事项
异常输入直接返回/。去掉输入字符串前、后的空格。空字符串直接返回/。使用/来拆分输入的字符串。针对每一段进行处理。 .不做处理。..返回上一层。保留。 拼接路径。
当前提供的实现其实有点啰嗦后续可以改进。 利用File类的方法也可以达成题目的要求考虑到并没有利用算法的知识来解决问题因此这里不做演示。