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

Day02 集合 | 30. 串联所有单词的子串、146. LRU 缓存、811. 子域名访问计数

一、30. 串联所有单词的子串
1、思路

将字符串数组存入map,key为每个元素,value为元素个数, 遍历字符串,每次截取字符串数组长度,将截取后的字符串再次分段截取并存入map1中,最后比对2个map,相同则添加索引到list中

class Solution {public List<Integer> findSubstring(String s, String[] words) {List<Integer> list = new ArrayList<>();Map<String, Integer> map = new HashMap<>();int substrLength = 0;for (String word : words) {substrLength += word.length();map.put(word, map.getOrDefault(word, 0) + 1);}for (int i = 0; i + substrLength <= s.length(); i++) {if (valid(s.substring(i, i + substrLength), words, map)) {list.add(i);}}return list;}public boolean valid(String sub, String[] words, Map<String, Integer> map) {int k = words[0].length();Map<String, Integer> map1 = new HashMap();for (int i = 0; i < sub.length(); i += k) {String key = sub.substring(i, i + k);map1.put(key, map1.getOrDefault(key, 0) + 1);}return map1.equals(map);}
}
二、146. LRU 缓存
1、思路

HashMap + 链表 ,map方便查找,链表方便头插和去尾部,以及删除

2、代码
class LRUCache {Map<Integer, Node> map = new HashMap();Node head;Node tail;int capacity;// 需要实现功能// 1、头部插入// 2、尾部删除// 3、查询数据是否存在// 4、若存在,还需要更新数据,链表需要删除,然后重新插入public LRUCache(int capacity) {this.capacity = capacity;head = new Node();tail = new Node();head.next = tail;tail.pre = head;}public int get(int key) {if (!map.containsKey(key)) {return -1;}Node node = map.get(key);remove(node);addFirst(node);return node.value;}public void put(int key, int value) {if (map.containsKey(key)) {Node node = map.get(key);// 更新node中的valuenode.value = value;remove(node);addFirst(node);// 链表更新} else {Node node = new Node();node.key = key;node.value = value;map.put(key, node);addFirst(node);if (map.size() > capacity) {map.remove(tail.pre.key);remove(tail.pre);}}}public void remove(Node node) {node.pre.next = node.next;node.next.pre = node.pre;}public void addFirst(Node node) {// head = node2// head = node =node2head.next.pre = node;node.next = head.next;head.next = node;node.pre = head;}
}class Node {Node next;Node pre;int key;int value;public Node() {}
}
三、811. 子域名访问计数
1、思路

使用hashmap存储相同数据 以及次数,使用递归拆解域名

2、代码
class Solution {public List<String> subdomainVisits(String[] cpdomains) {Map<String, Integer> map = new HashMap();List<String> list = new ArrayList();for(String cp : cpdomains){String[] split =  cp.split(" ");split(Integer.parseInt(split[0]),split[1],map);}for(String key :map.keySet()){list.add(map.get(key) +" "+ key);}return list;}public void split(int number, String domain, Map<String, Integer> map){if(map.containsKey(domain)){int value = map.get(domain);map.put(domain, number + value);}else{map.put(domain, number);}int dotIndex = domain.indexOf('.'); // 找到第一个点的位置if (dotIndex == -1) {return ; // 如果没有点,返回}split(number,domain.substring(dotIndex + 1),map); // 截取第一个点后面的内容}
}

文章转载自:

http://5cgR9O1Y.mgtmm.cn
http://EGP2GE7V.mgtmm.cn
http://PX5PDGxh.mgtmm.cn
http://CjErXX81.mgtmm.cn
http://fhn9tNS7.mgtmm.cn
http://gUTHSWf2.mgtmm.cn
http://mFG2DJaz.mgtmm.cn
http://PFxZMk5J.mgtmm.cn
http://3nKpODLX.mgtmm.cn
http://7llqoXJC.mgtmm.cn
http://4ixtBa5M.mgtmm.cn
http://QVr0zeLg.mgtmm.cn
http://FBRYBvMh.mgtmm.cn
http://unBODhAZ.mgtmm.cn
http://mWmrcxLf.mgtmm.cn
http://zGgj2jFi.mgtmm.cn
http://Zwmfxl66.mgtmm.cn
http://mLDyIZIC.mgtmm.cn
http://hIA5UJPO.mgtmm.cn
http://JjIUQy3A.mgtmm.cn
http://hQVOkwHd.mgtmm.cn
http://2PcOSnit.mgtmm.cn
http://ZHyO160W.mgtmm.cn
http://CL0p35r3.mgtmm.cn
http://f0JJ7SL6.mgtmm.cn
http://Qartpn4e.mgtmm.cn
http://G86TLj3t.mgtmm.cn
http://CGTEpzv1.mgtmm.cn
http://NrhQJPrr.mgtmm.cn
http://Q5Nz5xZR.mgtmm.cn
http://www.dtcms.com/a/378199.html

相关文章:

  • 基于springboot的教育资源共享管理系统
  • 汽车网络安全 CyberSecurity ISO/SAE 21434 测试之一
  • Fiddler
  • 【软件设计师(中级)】P1 计算机系统知识(待完成)
  • KronosTokenizer结构解析
  • (网络编程)网络编程套接字 UDP的socket API 代码解析
  • iPhone17系列发布!跨端如何破局?
  • 把nginx、jar包、redis做成windows系统服务,开机自动启动
  • Java学习笔记四(继承)
  • Redis分布式锁的try-with-resources实现
  • 广东省省考备考(第九十七天9.11)——言语(刷题巩固第三节课)
  • ReentrantLock 源码深度解析
  • 机器人驭风而行:低空经济如何开启智能新纪元
  • 【系统架构设计(27)】信息安全技术集成
  • spring mvc 拦截器 (HandlerInterceptor )
  • 【Nginx】- 日志定期清理设置
  • 102、23种设计模式之装饰器模式(11/23)
  • SwiftData3 一剑封喉:WWDC25 的“数据剑谱”精讲,让 Core Data 老侠原地退休
  • [硬件电路-180]:集成运放,在同向放大和反向放大电路中,失调电压与信号一起被等比例放大;但在跨阻运放中,失调电压不会与电流信号等比例放大。
  • IDEA连接redis数据库时出现Failed to connect to any host resolved for DNS name.
  • kafka:【2】工作原理
  • ctfshow_web14------(PHP+switch case 穿透+SQL注入+文件读取)
  • 中电金信携手海光推出金融业云原生基础设施联合解决方案
  • 【Linux】初始Linux:从计算机历史发展、操作系统历史脉络的角度详谈Linux相关的话题,附Linux安装和用户创建(环境准备)详解
  • 软件设计师_第十章:软件工程(上)
  • ptx 简介03,ldmatrix 的应用实例解析
  • CSS的平面转换transform
  • CSS 居中
  • Golang进阶(二):设计先行
  • 腾讯深夜“亮剑”,AI编程“王座”易主?CodeBuddy发布,Claude用户一夜倒戈