zoukankan      html  css  js  c++  java
  • longest-absolute-file-path

    https://leetcode.com/problems/longest-absolute-file-path/
    
    public class Solution {
        public int lengthLongestPath(String input) {
            Stack<Integer> stk = new Stack<Integer>();
            int left = 0;
            int curStrlen = 0;
            int curTab = 0;
            int ret = 0;
            boolean hasDot = false;
            boolean isFile = false;
            
            for (int i=0; i<input.length(); i++) {
                // 
    
                if (input.charAt(i) == 10) {
    
                    curStrlen = i-left;
                    if (!stk.empty()) {
                        curStrlen += 1 + stk.peek();
                    }
                        
                    if (isFile && curStrlen > ret) {
                        ret  = curStrlen;
                    }
                    stk.push(curStrlen);
                    hasDot = false;
                    isFile = false;
                    curTab = 0;
                    left = -1;
                }
                // 	
                else if (input.charAt(i) == 9 && curTab < stk.size()) {
                    curTab++;
                }
                else if (input.charAt(i) == ' ' && i+3 < input.length() &&
                         input.substring(i, i+4).equals("    ") && curTab < stk.size()) {
                    curTab++;
                    i += 3;
                }
                else {
                    if (left == -1) {
                        int stkLen = stk.size();
                        for (int j=0; j<stkLen-curTab; j++) {
                            stk.pop();
                        }
                        left = i;
                    }
                    if (input.charAt(i) == '.') {
                        hasDot = true;
                    }
                    else {
                        if (hasDot) {
                            isFile = true;
                        }
                    }
                }
    
            }
            
            curStrlen = input.length()-left;
            if (!stk.empty()) {
                curStrlen += 1 + stk.peek();
            }
            if (isFile && curStrlen > ret) {
                ret = curStrlen;
            }
            return ret;
        }
    }
  • 相关阅读:
    Linux Commands
    sizeof操作符的使用详解
    在Vim中使用cscope
    MySQL学习笔记
    Online judge for leetcode
    使用Vim,让你工作效率更高
    Ext JS笔记
    安装J2EE开发环境
    这些都是什么啊
    QrCode二维码的实现原理
  • 原文地址:https://www.cnblogs.com/charlesblc/p/5820344.html
Copyright © 2011-2022 走看看