码迷,mamicode.com
首页 > 其他好文 > 详细

187. Repeated DNA Sequences

时间:2016-07-21 06:22:29      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

建一个set, 是曾经遇到过的长度为10的string,然后对这个sample string从头到尾走一遍,如果曾经看到,那么就加到repeated set里,最后返回由repeated string组成的arrayList<String>里面。

之所以repeated也需要一个自己的set,因为有的重复序列可能出现好几次,但是只需要返回一个

 

值得注意的细节是:

1. 可以由一个Set直接创建一个ArrayList

2.如果set里面已经有该元素,那么添加这个元素的时候会返回false

 1     public List<String> findRepeatedDnaSequences(String s) {
 2         if(s == null || s.length() <= 10) {
 3             return new ArrayList<String>();
 4         }
 5         int len = s.length();
 6         Set<String> seen = new HashSet<String>();
 7         Set<String> repeated = new HashSet<String>();
 8         int start = 0;
 9         while(start + 10 <= len) {
10             String sub = s.substring(start, start + 10);
11             if(!seen.contains(sub)) {
12                 seen.add(sub); 
13             } else {
14                 repeated.add(sub);
15             }
16             start++;
17         }
18         return new ArrayList<String>(repeated);
19     }

 可以简化一下

 1     public List<String> findRepeatedDnaSequences(String s) {
 2         if(s == null || s.length() <= 10) {
 3             return new ArrayList<String>();
 4         }
 5         Set<String> seen = new HashSet<String>();
 6         Set<String> repeated = new HashSet<String>();
 7         for(int i = 0; i + 10 <= s.length(); i++) { 
 8             String sub = s.substring(i, i+10);
 9             if(!seen.add(sub)) {
10                 repeated.add(sub);
11             }
12         }
13         return new ArrayList<String>(repeated);
14     }

 

187. Repeated DNA Sequences

标签:

原文地址:http://www.cnblogs.com/warmland/p/5690287.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!