LeetCode 388. 文件的最长绝对路径(不用栈,前缀和)

1. 题目

假设我们以下述方式将我们的文件系统抽象成一个字符串:

字符串 "dir\n\tsubdir1\n\tsubdir2\n\t\tfile.ext" 表示:

dirsubdir1subdir2file.ext

目录 dir 包含一个空的子目录 subdir1 和一个包含一个文件 file.ext 的子目录 subdir2 。

字符串 "dir\n\tsubdir1\n\t\tfile1.ext\n\t\tsubsubdir1\n\tsubdir2\n\t\tsubsubdir2\n\t\t\tfile2.ext" 表示:

dirsubdir1file1.extsubsubdir1subdir2subsubdir2file2.ext

目录 dir 包含两个子目录 subdir1 和 subdir2。
subdir1 包含一个文件 file1.ext 和一个空的二级子目录 subsubdir1。
subdir2 包含一个二级子目录 subsubdir2 ,其中包含一个文件 file2.ext。

我们致力于寻找我们文件系统中文件的最长 (按字符的数量统计) 绝对路径。例如,在上述的第二个例子中,最长路径为 "dir/subdir2/subsubdir2/file2.ext",其长度为 32 (不包含双引号)。

给定一个以上述格式表示文件系统的字符串,返回文件系统中文件的最长绝对路径的长度。 如果系统中没有文件,返回 0。

说明:
文件名至少存在一个 . 和一个扩展名。
目录或者子目录的名字不能包含 .
要求时间复杂度为 O(n) ,其中 n 是输入字符串的大小。

请注意,如果存在路径 aaaaaaaaaaaaaaaaaaaaa/sth.png 的话,那么 a/aa/aaa/file1.txt 就不是一个最长的路径。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-absolute-file-path
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 用一个数组记录到当前层的字符个数,利用前缀累加
  • \t的个数表示层数,注意字符个数也包括\t

测试样例

"dir\n file.txt" 
"di r\n file.txt" 
"dir\n        file.txt"
"a.aaa\n\tfile.txt"
"dir\n\tsubdir1\n\tsubdir2\n\t\tfile.ext"
"dir\n\tsubdir1\n\t\tfile1.ext\n\t\tsubsubdir1\n\tsubdir2\n\t\tsubsubdir2\n\t\t\tfile2.ext"
class Solution {
public:int lengthLongestPath(string input) {int maxlen=0, i, lv = 0, count=0;vector<int> len(50,0);bool foundfile = false;for(i = 0; i < input.size(); ++i){if(input[i]=='\n'){len[lv] = lv>0 ? len[lv-1]+count : count;//利用前缀求当前长度if(foundfile)//找到文件了{maxlen = max(maxlen, len[lv]+lv);//更新最大长度,lv为\t个数foundfile = false;}lv = 0;count = 0;}else if(input[i]=='\t')lv++;else{if(i>0 && input[i-1]=='.' && (isalpha(input[i])||isdigit(input[i])))foundfile = true;count++;}}len[lv] = lv>0 ? len[lv-1]+count : count;if(foundfile)maxlen = max(maxlen, len[lv]+lv);return maxlen;}
};

0 ms 6.6 MB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Delphi自带的TDockTabSet组件实现停靠功能(Jeremy North)

源地址&#xff1a;http://edn.embarcadero.com/article/33446 摘要: Instructions on how to use the TDockTabSet component to make advanced docking user interfaces. Introduction This article discusses the use of the TDockTabSet component that was originally int…

linux下面 r和 n的区别,【冷知识】关于/r与/n以及 /r/n 的区别总结

首先:\r就是"回到行首"&#xff0c;\n就是"到下一行"即:\r是回车&#xff0c;\n是换行&#xff0c;前者使光标到行首&#xff0c;后者使光标下移一格。通常用的Enter是两个加起来的&#xff0c;即\r\n直接这么说你可能没啥感觉&#xff0c;但是真正到了编码…

LeetCode 417. 太平洋大西洋水流问题(BFS/DFS)

文章目录1. 题目2. 解题2.1 BFS 广度优先搜索2.2 DFS 深度优先搜索1. 题目 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。 “太平洋”处于大陆的左边界和上边界&#xff0c;而“大西洋”处于大陆的右边界和下边界。 规定水流只能按照上、下、左、右四个方…

用jdbc连接各数据库驱动

sql server 2000下的连接串&#xff1a;DRIVER"com.microsoft.jdbc.sqlserver.SQLServerDriver";URL"jdbc:microsoft:sqlserver://localhost:1433;databaseNamessoDemo;usersa;password1"; sql server 2005下的连接串&#xff1a;private static final Str…

安装linux出现基础系统出错,Linux系统出错提示信息详解

ERROR PCI: cannot allocate(无法指派)这样的错误有许多&#xff0c;他们主要在启动系统时出现。他们有一个共同的起因&#xff1a;错误的电源管理行为。罪魁祸首是一个叫做ACPI的东西&#xff0c;即高级配置与电源接口。尽管他是一种电源管理标准&#xff0c;但在十几年的时间…

vCard 格式

最近在做联系人的一些功能&#xff0c;当然是有必要了解一下vCard文件的格式&#xff0c;格式大致如下&#xff1a; vCard 2.1: 1: BEGIN:VCARD 2: VERSION:2.1 3: N:Gump;Forrest 4: FN:Forrest Gump 5: ORG:Bubba Gump Shrimp Co. 6: TITLE:Shrimp Man 7: TEL;WORK;V…

c语言基本数据类型常量,C语言基础学习基本数据类型-变量和常量

变量和常量什么是变量和常量&#xff1f;有些数据在程序运行前就预先设定&#xff0c;并在运行过程中不发生变化&#xff0c;称之为常量&#xff1b;有些数据在程序运行中可能发生变化或被赋值&#xff0c;称之为变量。使用变量前必须先声明一个变量。变量定义的语法是&#xf…

C++ 下一代标准库 tr1中默认的哈希 FNV hash

FNV是 Glenn Fowler&#xff0c; Landon Curt Noll, and Phong Vo 三人的缩写。 FNV-1 哈希算法的核心思想如下: hash offset_basisfor each octet_of_data to be hashed hash hash * FNV_prime hash hash xor octet_of_data return hash实现源码 uint32_t fnv_hash…

LeetCode 416. 分割等和子集(动态规划)

1. 题目 给定一个只包含正整数的非空数组。 是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: 输入: [1, 5, 11, 5] 输出: true 解释: 数组可以分割成 [1, 5, 5] 和 [11].示例 …

c语言格式错误pe,C语言PE文件filebuffer到imagebuffer的错误

// 代码节空白添加.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include int FileBuffers(PVOID* FileBuffer){//传入的FileBufferLPVOID PtempBuffer;FILE* f fopen("C:\\Users\\Administrator\\Desktop\\PET…

2011年影响3G手机发展四大因素

今晨闻讯&#xff0c;中电信明年3季度将推出iPhone。据称CDMA版本的iPhone推出&#xff0c;对中国电信意义重大&#xff0c;售价会高于WCDMA版。联通、移动、电信争夺“苹果血案”将继续上演。 截止2010年12月31日&#xff0c;中国3G用户不超过5000万。而工信部落实3G发展规划是…

c语言字符数组实参 形参,c语言基础(3) 数组和指针作为实参和形参的问题

字符串char a[]"abc";printf("%s",a);fgets(a,100, stdin) //安全的字符串输入函数printf("%s",a);scanf("%*[^\n]"); //两个scanf清空输入缓存scanf("%*c");int 值作为实参 指针作为形参void xchange1(int *n1,int *n2)…

Feature Engineering 特征工程 1. Baseline Model

文章目录1. 读取数据2. 处理label3. 添加特征4. 数据集切片5. 训练6. 预测learn from https://www.kaggle.com/learn/feature-engineering下一篇&#xff1a;Feature Engineering 特征工程 2. Categorical Encodings 1. 读取数据 预测任务&#xff1a;用户是否会下载APP&…

[转载] 湖北:星空团队——海燕计划

2010-7-1 来源&#xff1a;网易科技报道 本文网址&#xff1a;http://tech.163.com/10/0701/16/6AH5MA4S00094II8.html 1.项目及团队名称&#xff1a;星空团队——海燕计划 2.所在的赛区、所在的城市、所属高校&#xff1a;湖北赛区、武汉、华中科技大学 3.所处的公益领域&…

c语言静态存储和动态存储,为了便于计算机存储管理,C语言把保存所有变量的数据区,分成动态存储区和静态存储区,静态局部变量被存放在动态存储区。...

在向旅游者致欢迎词时&#xff0c;便于保存变量部变地陪的态度要热情&#xff0c;感情要真挚&#xff0c;内容要依情而异&#xff0c;语言要( )计算机存据区静山西省总的地势是()。储管成动储区储区存放储区提出到2020年要将我国旅游业建设成国民经济的战略性支柱产业和人民群众…

Feature Engineering 特征工程 2. Categorical Encodings

文章目录1. Count Encoding 计数编码2. Target Encoding 目标编码3. CatBoost Encodinglearn from https://www.kaggle.com/learn/feature-engineering上一篇&#xff1a;Feature Engineering 特征工程 1. Baseline Model 下一篇&#xff1a;Feature Engineering 特征工程 3.…

基于Silverlight+WCF的SAAS开发平台TAP(二)之核心技术

1 核心技术 1.1 元数据 元素据是一个统称&#xff0c;从软件的展现角度来看窗体、页签、字段、从数据存储角度&#xff0c;包括表、列&#xff1b;从逻辑处理角度&#xff0c;包括处理、回调等&#xff0c;在TAP开发平台中会详细讲解各元素的定义与应用。 1.2 函数引擎 函数引擎…

c语言函数能改变指针吗,如何修改传递给C中函数的指针?

如果要这样做&#xff0c;则需要传入指向指针的指针。void barPush(BarList ** list,Bar * bar){if (list NULL) return; // need to pass in the pointer to your pointer to your list.// if there is no move to add, then we are doneif (bar NULL) return;// allocate s…

Feature Engineering 特征工程 3. Feature Generation

文章目录1. 组合特征2. 过去7天的数据3. 上一个相同类型的项目的时间4. 转换数值特征learn from https://www.kaggle.com/learn/feature-engineering上一篇&#xff1a;Feature Engineering 特征工程 2. Categorical Encodings 下一篇&#xff1a;Feature Engineering 特征工程…

C# 转繁体转简体转拼音,超级文本大转换

最近项目中遇到一个需求&#xff1a;把员工的中文姓名根据系统配置转换成中文简体或中文繁体。 原以为需要一个很大的一个简体和繁体相对应的字符对应表之类的东西。 后来发现&#xff0c;VB中就包含了这样的函数Strings.StrConv(this.TextBox1.Text.Trim(), VbStrConv.Traditi…