187. Repeated DNA Sequences

一、题目

  1、审题

  

  2、分析

    求出在 S 中出现至少两次的十个字符组成的字符串。

 

二、解答

  1、思路:

    采用一个 Set 存储每一个字符串,当已存储的字符串再次出现时,会添加失败,则表示此字符串至少出现了两次,应当存储在另一个 Set 中进行去重。最终将第二个 Set 转为 List 即可。

    public List<String> findRepeatedDnaSequences(String s) {
        
        Set<String> resultSet = new HashSet<String>();
        Set<String> seen = new HashSet<>(); // 过滤重复的目标字符串
        
        for (int i = 0; i + 9 < s.length(); i++) {
            String tmp = s.substring(i, i + 10);
            if(!seen.add(tmp)) 
                resultSet.add(tmp);
        }
        
        return new ArrayList<>(resultSet);
    }

 

posted @ 2018-10-17 15:55  skillking2  阅读(121)  评论(0编辑  收藏  举报