zoukankan      html  css  js  c++  java
  • 187. Repeated DNA Sequences重复的DNA子串序列

    [抄题]:

    All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACGAATTCCG". When studying DNA, it is sometimes useful to identify repeated sequences within the DNA.

    Write a function to find all the 10-letter-long sequences (substrings) that occur more than once in a DNA molecule.

    Example:

    Input: s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
    
    Output: ["AAAAACCCCC", "CCCCCAAAAA"]

     [暴力解法]:

    时间分析:

    空间分析:

     [优化后]:

    时间分析:

    空间分析:

    [奇葩输出条件]:

    1. set转成arraylist直接放到括号里就行了

    [奇葩corner case]:

    [思维问题]:

    [英文数据结构或算法,为什么不用别的数据结构或算法]:

    10个数,从开始算,加到9就可以了。

    for (int i = 0; i + 9 < s.length(); i++)

    .substring包左不包右,所以必须写十位数。但是inde

    String ten = s.substring(i, i + 10);
     
    beginIndex =< str的值 < endIndex

    [一句话思路]:

    [输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):

    [画图]:

    [一刷]:

    1. set的判断语句 没加就自己自动加 没必要再写一遍
    2. set用add,map用put

    [二刷]:

    [三刷]:

    [四刷]:

    [五刷]:

      [五分钟肉眼debug的结果]:

    [总结]:

    set就是判重,一个不够用可以用两个

    [复杂度]:Time complexity: O(n) Space complexity: O(n)

    [算法思想:迭代/递归/分治/贪心]:

    [关键模板化代码]:

    [其他解法]:

    [Follow Up]:

    [LC给出的题目变变变]:

     [代码风格] :

     [是否头一次写此类driver funcion的代码] :

     [潜台词] :

    class Solution {
        public List<String> findRepeatedDnaSequences(String s) { 
            //ini: two sets
            List<String> result = new ArrayList<String>();
            Set<String> seen = new HashSet<String>();
            Set<String> ten = new HashSet<String>();
            
            //cc
            if (s.length() == 0) return result;
            
            //for loop: get substring
            for (int i = 0; i + 9 < s.length(); i++) {
                String str = s.substring(i, i+ 10);
                if (!seen.add(str)) ten.add(str);
            }
            
            //return
            return new ArrayList(ten);
        }
    }
    View Code
  • 相关阅读:
    js 创建函数,传递三个参数,返回最大值
    JS 实现 计算1~任意数字之间的所有整数阶乘的和
    npm install
    如何在浏览器上安装 VueDevtools工具
    前端日历插件
    css隐藏元素的几种方法
    less和sass的区别
    vue.js 自定义事件
    vue简单的导航栏
    用jetty启动idea中的maven项目报错Caused by: java.lang.ClassNotFoundException: org.apache.jasper.runtime.JspApplicationContextImpl
  • 原文地址:https://www.cnblogs.com/immiao0319/p/9373543.html
Copyright © 2011-2022 走看看