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

每日一题 — 串联所有单词的子串

30. 串联所有单词的子串 - 力扣(LeetCode)

思路:因为words里面的每一个字符串的长度都是固定的,所以可以将题转换成字符在字符串中的所有异位词

  • 设出哈希表
  • 定义left和right
  • 进窗口+维护count
  • 判断
  • 出窗口+维护count 

代码:

public List<Integer> findSubstring(String s, String[] words) {List<Integer> ret = new ArrayList<>();int len = words[0].length();int m = words.length;Map<String,Integer> hash1 = new HashMap<>();//将words中的所有字符加入到哈希表中for(String str : words){hash1.put(str,hash1.getOrDefault(str,0)+1);}//进窗口的次数(len 次)for(int i = 0; i < len; i++){Map<String,Integer> hash2 = new HashMap<>();for(int left = i, right = i, count = 0; right + len <= s.length(); right += len){//进窗口String in = s.substring(right,right+len);hash2.put(in,hash2.getOrDefault(in,0)+1);//维护countif(hash2.get(in) <= hash1.getOrDefault(in,0)){count++;}//判断if(right - left + 1 > m*len){//出窗口String out = s.substring(left,left+len);//维护countif(hash2.get(out) <= hash1.getOrDefault(out,0)){count--;}hash2.put(out,hash2.get(out)-1);left+=len;}if(m == count){ret.add(left);}}}return ret;}

 

http://www.lryc.cn/news/340146.html

相关文章:

  • Android studio顶部‘app‘红叉- Moudle ‘XX.app’ dosen’t exist in project
  • 软考证书有用吗?软考证书的含金量大吗?
  • 自动化测试原理,怎么理解?【UI自动化】
  • typedef,#define,asserr,exit函数,free函数
  • Linux的重要命令(二)+了解Linux目录结构
  • nmap使用
  • 简约风好看的个人主页源码
  • 1113. 红与黑--Flood Fill 算法
  • 深入Java中间件:编程设计精粹
  • AUTOCAD输出或打印PDF文件时,如何将图形居中且布满图纸?
  • unity socket udp 连接
  • 【ensp】VLAN间通信的解决办法
  • 接口测试框架搭建D22
  • CASA模型教程
  • 算法思路-遥感语义分割与变化检测
  • 动态规划专练( 231.打家劫舍Ⅱ)
  • K-means和逻辑回归
  • 3.2 iHRM人力资源 - 组织架构 - 编辑及删除
  • 支付系统核心逻辑 — — 状态机(JavaGolang版本)
  • rest_framework_mongoengine实现后端的增删改查
  • 【精读文献】Scientific data|2017-2021年中国10米玉米农田变化制图
  • 高光谱图像修复笔记
  • GPS定位原理及应用分析
  • Java面试篇9——并发编程
  • [RK3399 Linux] 使用busybox 1.36.1制作rootfs
  • JavaScript入门--循环
  • 【Delphi 爬虫库 1】GET和POST方法
  • [leetcode] 快乐数 E
  • Lobe UI - 基于 AntDesign 开发的 AIGC Web 应用的开源 UI 组件库
  • Java常用类 -- Random类