当前位置: 首页 > news >正文

(LeetCode 每日一题) 1233. 删除子文件夹 (排序)

题目:1233. 删除子文件夹

在这里插入图片描述
在这里插入图片描述

思路:排序,时间复杂度0(L*nlogn)。

文件夹a的子文件b,b字符串字典序列一定是大于a的,所以直接将字符串数组folder升序排序。每次只需判断当前字符串,是否是父文件夹数组v最后一个字符串的子文件夹即可,细节看注释。

C++版本:

class Solution {
public:// 判断a是否是b的前缀,且b[a.size()]=='/'bool check(string a,string b){if(a.size()>b.size()) return false;for(int i=0;i<a.size();i++){if(a[i]!=b[i]) return false;}if(b.size()>a.size() &&b[a.size()]=='/') return true;return false;}vector<string> removeSubfolders(vector<string>& folder) {// 升序sort(folder.begin(),folder.end());// 答案:父文件夹数组vector<string> v;v.push_back(folder[0]);for(int i=1;i<folder.size();i++){string last=v.back();string t=folder[i];// 判断last是否是t的前缀,且t[last.size()]=='/'if(check(last,t)==false){v.push_back(t);}}return v;}
};

JAVA版本:

class Solution {boolean check(String a,String b){if(a.length()>b.length()) return false;for(int i=0;i<a.length();i++){if(a.charAt(i)!=b.charAt(i)) return false;}if(b.length()>a.length() &&b.charAt(a.length())=='/') return true;return false;}public List<String> removeSubfolders(String[] folder) {Arrays.sort(folder);List<String> v = new ArrayList<>();v.add(folder[0]);for(int i=1;i<folder.length;i++){String last=v.getLast();String t=folder[i];if(check(last,t)==false){v.add(t);}}return v;}
}

GO版本:

func removeSubfolders(folder []string) []string {slices.Sort(folder)v:=[]string{folder[0]}for i:=1;i<len(folder);i++ {last:=v[len(v)-1]t:=folder[i]if check(last,t)==false {v=append(v,t)}}return v
}
func check(a,b string) bool {if len(a)>len(b) {return false}for i,_:=range a {if a[i]!=b[i] {return false}}if len(b)>len(a) && b[len(a)]=='/' {return true}return false
}
http://www.lryc.cn/news/593617.html

相关文章:

  • 数据集下载网站
  • aosp15上SurfaceFlinger的dump部分新特性-无Layer相关详细信息输出如何解决?
  • 基于Electron打包jar成Windows应用程序
  • 【2025/07/19】GitHub 今日热门项目
  • 【逻辑回归】MAP - Charting Student Math Misunderstandings
  • 2023 年 5 月青少年软编等考 C 语言八级真题解析
  • [故障诊断方向]基于二维时频图像和数据增强技术的轴承故障诊断模型
  • [黑马头条]-基于MinIO存储文章详情
  • 代码随想录算法训练营第二十五天
  • Streamlit 官翻 3 - 开发教程 Develop Tutorials
  • 80、【OS】【Nuttx】【启动】caller-saved 和 callee-saved 示例:栈空间对齐
  • Input输入和Screen相关
  • 轻松学习C++:基本语法解析
  • 从丢包到恢复:TCP重传机制的底层逻辑全解
  • 将HTML+JS+CSS数独游戏包装为安卓App
  • 微服务学习(六)之分布式事务
  • 华为擎云L420安装LocalSend
  • Java大视界:Java大数据在智能医疗电子健康档案数据挖掘与健康服务创新>
  • kafka--基础知识点--6.1--LEO、HW、LW
  • LeetCode Hot100【7. 整数反转】
  • 创意 C++ 文本冒险战斗游戏代码
  • Uniapp之自定义图片预览
  • 下一场范式革命:Transformer架构≠最终解法
  • Spring IOC容器在Web环境中是如何启动的(源码级剖析)?
  • Java多线程进阶
  • Node.js net.Socket.destroy()深入解析
  • [spring6: AspectMetadata AspectInstanceFactory]-源码解析
  • 零基础学习性能测试第二章-监控体系
  • OllyDbg技巧学习
  • Redis 如何保证高并发与高可用