力扣 187. 重复的DNA序列

1.题目

DNA序列 由一系列核苷酸组成,缩写为 'A', 'C', 'G' 和 'T'.。

例如,"ACGAATTCCG" 是一个 DNA序列 。

在研究 DNA 时,识别 DNA 中的重复序列非常有用。

给定一个表示 DNA序列 的字符串 s ,返回所有在 DNA 分子中出现不止一次的 长度为 10 的序列(子字符串)。你可以按 任意顺序 返回答案。

示例 1:

输入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
输出:["AAAAACCCCC","CCCCCAAAAA"]

示例 2:

输入:s = "AAAAAAAAAAAAA"
输出:["AAAAAAAAAA"]

提示:

    0 <= s.length <= 10^5
    s[i]=='A'、'C'、'G' or 'T'

来源:力扣(LeetCode)

 2.思路及代码

        返回所有在 DNA 分子中出现不止一次的 长度为 10 的序列,即统计不同子字符串的出现的次数,并将出现次数大于1的储存起来。至于如何统计就要用到STL中的map或unordered_map,简单来讲,两者储存的元素都是键(第一个元素)值(第二个元素)对,比如:map<int, int>就类似于vector<int>,而map<string, int>就可以通过string来查询int。至于两者的区别,map的内部是一个红黑树,会根据键的大小自动排序,unordered_map的内部则是哈希表,查找效率更高但更占内存。(具体可看大佬)显然这题用unordered_map更好,但map也不会超时。代码如下:

class Solution {
public:vector<string> findRepeatedDnaSequences(string s) {//当s的长度小于等于10直接返回空数组if (s.size() <= 10) return {};vector<string>arr;unordered_map<string, int>mp;string::iterator it = s.begin();//遍历字符串,统计所有长度为10的字符串for (; it <= s.end() - 10; ++it) {string tmp(it, it + 10);++mp[tmp];}unordered_map<string, int>::iterator it_map = mp.begin();//将出现次数超过1的字符串加入数组for (; it_map != mp.end(); ++it_map) {if (it_map->second > 1) {arr.push_back(it_map->first);}}return arr;}
};

map的运行结果:

unordered_map的运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/700467.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【word技巧】word文档如何设置限制编辑

Word文档中为了提高办公效率以及文档安全&#xff0c;我们可以考虑为word文档设置一个限制编辑起到保护文档的作用。今天介绍word文档设置限制编辑的方法。 打开word文档之后&#xff0c;点击功能栏中的【审阅】功能&#xff0c;选择【限制编辑】功能 这是我们勾选右边弹框中的…

【Spring MVC篇】简单案例分析

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Spring MVC】 本专栏旨在分享学习Spring MVC的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 一、加法计算器二…

匿名+有名管道

管道 相关概念 4种情况 正常情况&#xff0c;如果管道没有数据&#xff0c;读端陷入等待&#xff0c;直到有数据才能唤醒正常情况&#xff0c;如果管道被写满&#xff0c;写端陷入等待&#xff0c;直到有空间才能唤醒写段关闭&#xff0c;读端一直读取&#xff0c;read返回0…

mac m1调试aarch64 android kernel最终方案

问题 这是之前的&#xff0c;调试android kernel的方案还是太笨重了 完美调试android-goldfish(linux kernel) aarch64的方法 然后&#xff0c;看GeekCon AVSS 2023 Qualifier&#xff0c;通过 sdk-repo-linux_aarch64-emulator-8632828.zip 进行启动 完整编译的aosp kernnl…

深入理解Java单例模式

深入理解Java单例模式 摘要&#xff1a;本文将详细介绍Java中的单例模式&#xff0c;包括其概念、实现方式、优缺点以及应用场景。我们将通过实例来展示如何实现一个线程安全的单例类&#xff0c;并讨论单例模式在实际项目中的运用。 一、单例模式概述 单例模式&#xff08;…

51单片机学习(4)-----独立按键进一步控制LED灯

前言&#xff1a;感谢您的关注哦&#xff0c;我会持续更新编程相关知识&#xff0c;愿您在这里有所收获。如果有任何问题&#xff0c;欢迎沟通交流&#xff01;期待与您在学习编程的道路上共同进步。 目录 一. 独立按键灵活控制LED 程序一&#xff1a;单个独立按键控制多个…

Web性能优化-详细讲解与实用方法-MDN文档学习笔记

Web性能优化 查看更多学习笔记&#xff1a;GitHub&#xff1a;LoveEmiliaForever MDN中文官网 性能优良的网站能够提高访问者留存和用户满意度&#xff0c;减少客户端和服务器之间传输的数据量可降低各方的成本 不同的业务目标和用户需求需要不同的性能度量&#xff0c;要提高…

STM32CubeMX FOC工程配置(AuroraFOC)

一. 简介 哈喽&#xff0c;大家好&#xff0c;今天给大家带来基于AuroraFOC开发板的STM32CubeMX的工程配置&#xff0c;主要配置的参数如下: 1. 互补PWM输出 2. 定时器注入中断ADC采样 3. SPI配置 4. USB CDC配置 5. RT Thread配置 大家如果对这几部分感兴趣的话&#xff0c…

蓝桥双周赛

题目链接&#xff1a;3.欢迎参加福建省大学生程序设计竞赛【算法赛】 - 蓝桥云课 (lanqiao.cn) #include<iostream> #include<set> using namespace std; typedef pair<int,int>Set; int main() {set<Set>nums;int n,a1,b1;cin>>n;while(n--){ci…

贪婪算法入门指南

想象一下&#xff0c;你在玩一款捡金币的游戏。在这个游戏里&#xff0c;地图中散布着各种大小不一的金币&#xff0c;而你的目标就是尽可能快地收集到最多的金币。你可能会采取一个直观的策略&#xff1a;每次都去捡最近的、看起来最大的金币。这种在每一步都采取局部最优解的…

新版Java面试专题视频教程——虚拟机篇①

新版Java面试专题视频教程——虚拟机篇① 1 JVM组成1.1 JVM由那些部分组成&#xff0c;运行流程是什么&#xff1f;1.2 什么是程序计数器&#xff1f;1.3 你能给我详细的介绍Java堆吗?1.3.1 1.7和1.8 堆的区别1.3.2 元空间(MetaSpace)介绍 1.4 什么是虚拟机栈1.4.1 堆和栈的区…

普中51单片机学习(AD转换)

AD转换 分辨率 ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如12位ADC的分辨率就是12位&#xff0c;或者说分辨率为满刻度的1/(2^12)。 一个10V满刻度的12位ADC能分辨输入电压变化最小值是10V1/(2^12 )2.4mV。 量化误差 …

【Kafka】消息重复场景及解决

目录 生产者阶段重复根本原因过程记录顺序问题解决方案 生产者和broker阶段消息丢失原因解决 消费者阶段重复根本原因解决 生产者阶段重复 根本原因 生产发送的消息没有收到正确的broke响应&#xff0c;导致生产者重试。 生产者发出一条消息&#xff0c;broke落盘以后因为网…

【报错】在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 4832(apt)持有... 30秒

1 背景 在安装多种多媒体解码器(包括H.264解码器)的时候,使用如下命令: sudo apt install ubuntu-restricted-extras然后报错如下: 在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 4832(apt)持有... 30秒 2 解决方法 输入如下命令: sudo rm /v…

精读《前端未来展望》

1. 引言 前端展望的文章越来越不好写了&#xff0c;随着前端发展的深入&#xff0c;需要拥有非常宽广的视野与格局才能看清前端的未来。 笔者根据自身经验&#xff0c;结合下面几篇文章发表一些总结与感悟&#xff1a; A Look at JavaScript’s Future前端开发 20 年变迁史前…

2024/02/19

额&#xff0c;忘了&#xff0c;&#xff0c;&#xff0c;&#xff0c; 我再想想&#xff0c;&#xff0c;&#xff0c;今日星期一好像今天分配给我的任务就是以后远程xd现场。

torch报错:[winerror 126] 找不到指定的模块torch_python.dll“ or one of its dependencies.

[winerror 126] 找不到指定的模块。 error loading "d:\miniconda\envs\action_env\lib\site-packages\torch\lib\torch_python.dll" or one of its dependencies. 在使用这个yolov5模块的时候发现了这个错误&#xff0c;错误原因是因为python版本和torch版本冲突。…

linux drm mipi dsi lcd 点屏之设备树配置

linux drm mipi dsi lcd 点屏之设备树配置 设备树文档&#xff1a; https://elixir.bootlin.com/linux/v6.8-rc5/source/Documentation/devicetree/bindings/display/dsi-controller.yaml https://elixir.bootlin.com/linux/v6.8-rc5/source/Documentation/devicetree/binding…

网络安全笔记总结

IAE引擎 1.深度检测技术--DFI和DPI技术 DFI和DPI都是流量解析技术&#xff0c;对业务的应用、行为及具体信息进行识别&#xff0c;主要应用于流量分析及流量检测。 DPI&#xff1a;深度包检测技术 DPI是一种基于应用层的流量检测和控制技术&#xff0c;对流量进行拆包&#x…

6.openEuler系统服务的配置和管理(二)

openEuler OECA认证辅导,标红的文字为学习重点和考点。 如果需要做实验,建议安装麒麟信安、银河麒麟、统信等具有图形化的操作系统,其安装与openeuler基本一致。 3.任务管理 任务的概念和相关术语: 当你在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因…