美文网首页
Longest Absolute File Path

Longest Absolute File Path

作者: BLUE_fdf9 | 来源:发表于2018-09-19 06:24 被阅读0次

    题目
    略, 太长了,who cares

    答案

    class Solution {
        public int lengthLongestPath(String ss) {
            Stack<Integer> stk = new Stack<Integer>();
    
            int curr = 0, max_len = 0, num_indent = 0, curr_len = 0;
            boolean new_line = true;
            while(curr < ss.length()) {
                if(ss.substring(curr, curr + 1).equals("\n")) {
                    new_line = true;
                    num_indent = 0;
    
                    // How many \t after \n, consume all of them
                    curr += 1;
                    String token = ss.substring(curr, curr + 1);
                    while(token.equals("\t")) {
                        num_indent++;
                        curr += 1;
                        token = ss.substring(curr, curr + 1);
                    }
                }
    
                else {
                    int backslash_pos = ss.indexOf("\n", curr);
                    if(backslash_pos == -1) backslash_pos = ss.length();
                    String token = ss.substring(curr, backslash_pos);
    
                    if(new_line) {
                        new_line = false;
                        while(stk.size() > num_indent) {
                            curr_len = curr_len - stk.pop();
                        }
                    }
                    // Is this a file or directory ?
                    if(token.contains(".")) {
                        max_len = Math.max(max_len, curr_len + token.length() + stk.size());
                    }
                    else {
                        stk.add(token.length());
                        curr_len += token.length();
                    }
    
                    curr = curr + token.length();
                }
            }
            return max_len;
        }
    }
    

    相关文章

      网友评论

          本文标题:Longest Absolute File Path

          本文链接:https://www.haomeiwen.com/subject/ihlbnftx.html