码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode] 71. 简化路径

时间:2018-07-26 01:09:47      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:problem   for   路径   build   .com   push   main   操作   pen   

71. 简化路径

维护一个栈,当出现.时不做操作,出现..时栈中弹走一个元素

最后从头遍历栈输出即可

注意,文件名可能是千奇百怪的,超过两个.(比如...)可认作文件名

注意,
不要相信playgroud提供的main函数!
不要相信playgroud提供的main函数!
不要相信playgroud提供的main函数!

class Solution {
    public String simplifyPath(String path) {
        Stack<String> stack = new Stack<>();
        int i = 0;
        while (i < path.length()) {
            while (i < path.length() && path.charAt(i) == ‘/‘) i++;
            if (i >= path.length()) break;
            if (path.charAt(i) == ‘.‘) {
                if (i + 1 >= path.length()) {
                    break;
                }
                if (path.charAt(i + 1) == ‘/‘) {
                    // ./
                    i++;
                    continue;
                }
                if (path.charAt(i + 1) == ‘.‘) {
                    if (i + 2 >= path.length() || path.charAt(i + 2) == ‘/‘) {
                        // ../
                        i += 2;
                        if (!stack.isEmpty()) {
                            stack.pop();
                        }
                        continue;
                    }
                }
            }
            // is word
            StringBuilder word = new StringBuilder();
            while (i < path.length() && path.charAt(i) != ‘/‘) {
                word.append(path.charAt(i));
                i++;
            }
            stack.push(word.toString());

        }

        StringBuilder ans = new StringBuilder();
        if (stack.isEmpty()) {
            return "/";
        }
        for (String s : stack) {
            ans.append("/").append(s);
        }
        return ans.toString();
    }
}

[leetcode] 71. 简化路径

标签:problem   for   路径   build   .com   push   main   操作   pen   

原文地址:https://www.cnblogs.com/acbingo/p/9369148.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!