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

【每日一题Day135】LC1487保证文件名唯一 | 哈希表

保证文件名唯一【LC1487】

给你一个长度为 n 的字符串数组 names 。你将会在文件系统中创建 n 个文件夹:在第 i 分钟,新建名为 names[i] 的文件夹。

由于两个文件 不能 共享相同的文件名,因此如果新建文件夹使用的文件名已经被占用,系统会以 (k) 的形式为新文件夹的文件名添加后缀,其中 k 是能保证文件名唯一的 最小正整数

返回长度为 n 的字符串数组,其中 ans[i] 是创建第 i 个文件夹时系统分配给该文件夹的实际名称。

  • 思路:

    使用哈希表统计每个文件名出现的次数,如果哈希表中未出现过该文件名,那么不需要添加后缀,将其直接放入哈希表中;如果哈希表中出现过该文件名,那么需要找到不存在与哈希表中的最小后缀k,那么新文件夹的文件名为file=names[i] + "(" + k + ")",然后在哈希表中更新names[i] 出现的次数和file

  • 实现

    class Solution {public String[] getFolderNames(String[] names) {int n = names.length;Map<String, Integer> map = new HashMap<>();String[] res = new String[n];for (int i = 0; i < n; i++){if (!map.containsKey(names[i])){map.put(names[i], 1);res[i] = names[i];}else{        int count = map.get(names[i]);while (map.containsKey(names[i] + "(" + count + ")")){count++;}String file = names[i] + "(" + count + ")";                res[i] = file;map.put(file, 1);map.put(names[i], count);}}return res;}
    }
    
    • 复杂度
      • 时间复杂度:O(∑i=0n−1mi)O(\sum^{n-1} _{i=0} m_i)O(i=0n1mi),mim_imi表示字符串names[i]names[i]names[i]的长度
      • 空间复杂度:O(∑i=0n−1mi)O(\sum^{n-1} _{i=0} m_i)O(i=0n1mi)
http://www.lryc.cn/news/27719.html

相关文章:

  • 计算机系统的基本组成 第一节
  • Scrapy爬虫框架入门
  • 最新使用nvm控制node版本步骤
  • Linux内核4.14版本——drm框架分析(1)——drm简介
  • Google的一道经典面试题 - 767. 重构字符串
  • E8-公共选择框相关的表
  • 再学C语言41:变长数组(VLA)
  • 物联网WEB大屏数据可视化
  • 新:DlhSoft Gantt Chart for WPF Crack
  • C++基础(一)—— C++概述、C++对C的扩展(作用域、struct类型、引用、内联函数、函数默认参数、函数占位参数、函数重载)
  • Rust学习总结之if,while,loop,for使用
  • Java知识复习(十一)RabbitMQ
  • thinkphp图片压缩类
  • 如何将图数据库应用于电影智能推荐
  • CSS实现动画效果的菜单收起展开图标,html实现动画效果的箭头
  • 大数据平台小结
  • 力扣-139单词拆分
  • 图机器学习-图神经网络
  • 配置Airbyte资源限制
  • python实现PCA降维画分类散点图并标出95%的置信区间
  • Mysql高级之索引结构详解
  • 【线程-J.U.C】
  • docker布署spring boot jar包项目
  • 极简Vue3教程--Pinia状态管理
  • 常用的map转bean互转方法
  • 2.4G收发一体芯片NRF24L01P跟国产软硬件兼容 SI24R1对比
  • 设计模式之七大原则(一)——单一职责原则、开放-关闭原则
  • C++ set、unordered_set、multiset它们之间的区别与一些使用方法(不断更新)
  • hadoop调优
  • EM@三角函数诱导公式