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

重复的DNA序列

题目链接

重复的DNA序列

题目描述

注意点

  • 0 <= s.length <= 10^5
  • s[i]==‘A’、‘C’、‘G’ or ‘T’
  • 返回所有在 DNA 分子中出现不止一次的 长度为 10 的序列(子字符串)

解答思路

  • 使用一个大小为10的滑动窗口存储该区间内的字符组成的字符串,使用哈希表存储任意一段滑动窗口对应的字符串是否出现过,如果未出现则往哈希表中加入该字符串,如果出现过则还需要判断结果中是否已存在该字符串,不存在则往结果中添加字符串

代码

class Solution {public List<String> findRepeatedDnaSequences(String s) {if (s.length() <= 10) {return new ArrayList<>();}Set<String> res = new HashSet<>();StringBuilder sb = new StringBuilder();for (int i = 0; i < 10; i++) {sb.append(s.charAt(i));}Set<String> set = new HashSet<>();set.add(sb.toString());for (int i = 10; i < s.length(); i++) {sb.deleteCharAt(0);sb.append(s.charAt(i));String tmp = sb.toString();if (!set.add(tmp)) {res.add(tmp);}}return new ArrayList<>(res);}
}

关键点

  • 滑动窗口的思想
  • 防止多个满足题意的相同字符串重复添加

http://www.mrgr.cn/news/2978.html

相关文章:

  • ubuntu设置共享文件夹,非虚拟机,服务器版
  • 为啥每个语音的printf(“%d%d%d%d“,i,j,i++,j++)不一样
  • PyTorch升级之旅——安装与基本知识
  • css中怎样使calc计算的高度生效?
  • jmeter通过参数文件、循环组件实现多账号登陆
  • 接口测试的几种方法
  • 【CVE-2024-】泛微协同管理应用平台(e-cology)
  • Compose(13)聊聊compose的渲染特点
  • 刷到好听的音频怎么办
  • Javaweb学习之HTML(二)
  • 【IC前端虚拟项目】用例的完善与补充
  • 监控状态流图中的测试点
  • 三勾点餐系统|支持多端发布,方便二次开发
  • Python WebSocket自动化测试:构建高效接口测试框架
  • 232. 用栈实现队列
  • 协处理器+流水线 (9)
  • Linux系统性能调优指南-硬件资源管理
  • 从零到一,全面掌握Apache DolphinScheduler发版流程,实战派经验分享!
  • 前端算法 | LeetCode第 70 题爬楼梯问题
  • Java 开发中常用的 Linux 命令