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

LeetCode-187. Repeated DNA Sequences

这个题是检测子串的重复次数。开始想当然的想到通过s.substring依次取出10个字符串,然后通过equal去比较是否相同。虽然结果可以,但是毫无疑问,时间复杂度O(n2)超时。

第一层遍历是无法避免的,可以优化的是对字串的对比。类似于字串问题,可以转换为字节操作。因此修改代码如下:

 

 

public class Solution {
    public List<String> findRepeatedDnaSequences(String s) {
        
        List<String> resultlist = new ArrayList<>();   //最终的结果
        int key = 0;
        if (s.length()==0)
        {
            return resultlist;
        }

        HashMap<Character,Integer> map = new HashMap<Character, Integer>();    //对四种字母进行编码,可以减少存储空间,同时加快比较速度
        map.put('A',0);
        map.put('C',1);
        map.put('G',2);
        map.put('T',3);
        HashMap<Integer,Integer> result = new HashMap<Integer, Integer>();

        for(int i=0;i<s.length();i++)
        {
            key = (key<<2 | map.get(s.charAt(i)) & 0x3) & 0xfffff;  //00.01.10.11可以分别表示四种字符,占2位。每次一个左移2位,通过&0x3可以取出后两位。fffff固定取2*10位
            if(i<9) continue;
            if (result.get(key) == null) {
                result.put(key, 1);
            } else if (result.get(key) == 1) {
                resultlist.add(s.substring(i - 9, i + 1));
                result.put(key, 2);
            }
        }


        return resultlist;
    }
}

 

转载于:https://www.cnblogs.com/ren-jie/p/5267169.html

相关文章:

  • 有趣的玩意儿
  • 【直播回顾】21天搭建推荐系统:帮你减少90%代码量
  • 最少换乘 之简化版
  • Nginx(四):LNMMP架构实现Web动静分离
  • JNI 调用,C++ invoke C# dll return to java(见git代码)
  • [1204 寻找子串位置] 解题报告
  • PostgreSQL Analyze分区表:主表与子表的统计信息问题
  • UI初级 Label
  • 深入理解C++中的explicitkeyword
  • 触发JVM进行Full GC的情况及应对策略
  • JQuery ajax方法及参数
  • PHPCMS V9模板制作
  • C++ 继承多态
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • iOS边练边学--通知机制和键盘处理小练习
  • Angular 响应式表单 基础例子
  • Debian下无root权限使用Python访问Oracle
  • Docker 笔记(2):Dockerfile
  • git 常用命令
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • python docx文档转html页面
  • Sass Day-01
  • Spring核心 Bean的高级装配
  • vue.js框架原理浅析
  • vuex 笔记整理
  • 飞驰在Mesos的涡轮引擎上
  • 如何解决微信端直接跳WAP端
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 一些css基础学习笔记
  • 用简单代码看卷积组块发展
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • kubernetes资源对象--ingress
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​iOS安全加固方法及实现
  • ​水经微图Web1.5.0版即将上线
  • (2)(2.10) LTM telemetry
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .Net MVC + EF搭建学生管理系统
  • .Net6使用WebSocket与前端进行通信
  • .net解析传过来的xml_DOM4J解析XML文件
  • .NET连接MongoDB数据库实例教程
  • .NET连接数据库方式
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .Net中wcf服务生成及调用
  • @Bean注解详解
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • [ Linux ] Linux信号概述 信号的产生
  • [C#][opencvsharp]opencvsharp sift和surf特征点匹配
  • [C++]C++类基本语法
  • [CF482B]Interesting Array
  • [ERROR] 不再支持目标选项 5。请使用 7 或更高版本