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); }