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

算法16.0

算法9.0、算法10.0:用数组构建哈希表的代码 

算法11.0 :判断条件要清晰

算法12.0:判断条件的处理  什么时候返回

算法13.0:有关哈希表的知识

算法14.0补充:

hash1统计字符串p中各个字符出现的次数        hash2统计滑动窗口中字符出现的次数

check的步骤的时候  搞一个大小为26的数组充当哈希表   判断操作只需要比较26次即可

这样其实时间复杂度不小   时间复杂度是n

但是这里是一个一个字符 我们构建了一个字符数组,但是有的题目是字符串,此时再比较两个哈希表就非常困难

更新结果的优化:更新结果的判定条件

利用变量count来统计窗口中“有效字符”的个数

还是hash表1 和 hash表2  构建一个变量count

遍历字符串的时候  我们遇到了字母  先拉下来   统计出现的次数

然后和hash表2的字符比较 

确认这个是有效字符之后   count+1

然后继续遍历字符串................

一边移动滑动窗口   一边统计有效字符的个数

滑动窗口右移动的时候 要干掉左面的字符(干掉之前先和哈希表的字符比较一下 看这个字符是有效字符  是的话count会更新 )

这样下来我们每次只需要判断count和len是否相等就可以了

class Solution {public List<Integer> findAnagrams(String ss, String pp) {List<Integer>  ret = new ArrayList<Integer>();char[] s = ss.toCharArray();char[] p = pp.toCharArray();//构建哈希表int[] hash1 = new int[26];for(char ch:p) hash1[ch-'a']++;int[] hash2 = new int[26];for(int left=0,right=0,count=0;right<s.length;right++){char in = s[right];hash2[in-'a']++;int m = p.length;if(hash2[in-'a'] <= hash1[in-'a']) count++;//进窗口+维护countif(right-left+1 > m){ //判断char out = s[left++];//left++是因为滑出窗口之后  left要移动if(hash2[out-'a'] <= hash1[out-'a']) count--;//出窗口+维护counthash2[out-'a']--; }//更新结果if(count == m) ret.add(left);}return ret;}
}
//xiyu251020&1#2*6//先搞一个数组 用来题目要求的返回  //将字符串转换为数组    ss.toCharArray();//   for(char ch:p) hash1[ch-'a']++;
//for each增强for循环 字符串数组ch是临时的 冒号可以读作in
//ch - 'a':将字符 ch 转换为数组索引('a'→0,'b'→1,...,'z'→25)。
//hash1[ch - 'a']++:对应字母的计数器加 1。

http://www.dtcms.com/a/507764.html

相关文章:

  • 卡码网语言基础课(Python) | 16.出现频率最高的字母
  • [优选算法专题四.前缀和——NO.28 除自身以外数组的乘积]
  • 垂直门户网站怎么做如何开设一个网站
  • 第一章 FreeRTOS简介
  • 【任务调度】DolphinScheduler钉钉告警消息格式修改
  • 医院的网站关键词定位一般是什么潜江招聘资讯网
  • 网站制作软件培训网络推广培训心得
  • YOLOv4:目标检测更亲民更精准
  • 解决Jmeter警告
  • 构建企业数字化办公核心:安全高效的内网im私有化协同平台
  • 天津建设网站的公司哪家好wordpress+手机站目录
  • 19.9 ChatPPT v2.0语音识别实战:从噪音数据到92%准确率的企业级方案
  • 看风格的网站seo是什么意思 职业
  • Tomcat核心原理与运维实战指南
  • MyBatis-Plus的分页插件
  • S4双向链表
  • h5模板是什么网站开发好什么进行界面的优化
  • 淘宝做短视频网站自学网页设计的网站
  • 【含文档+PPT+源码】基于SpringBoot+Vue的校园电子设备租赁系统
  • 渗透测试快速启动工具箱
  • 在 go-zero 中优雅使用 Google Wire 实现依赖注入
  • Springboot3.5.6 + jdk21使用第三方xjar加密
  • [go 面试] 构建高效微服务通信:选择合适的通信方式
  • 推荐营销型网站建设做电影资源网站手机版
  • 厦门网站设计排行网站建设培训费用多少
  • 哪个网站做图文素材多项目投资网
  • Python3编程之面向对象
  • 【AI4S】从直觉到人工智能:药物发现中的小分子表征演变
  • docker compose 2.33版本安装
  • 在线解决window和linux对linux远程问题