0%

leetCode-187:Repeated DNA Sequences

问题描述

给定一个字符串,只包含 ACGT 四个字母,要求找出所有长度是10的子字符串(不重复)且该子字符串出现次数大于1次。题目链接:**点我**

样例输入输出

输入:s = “AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT”

输出:[“AAAAACCCCC”,”CCCCCAAAAA”]

输入:s = “AAAAAAAAAAAAA”

输出:[“AAAAAAAAAA”]

问题解法

此题比较简单,直接用一个 set 来存储每个子字符串,每次取出新的字符串时判断是否已经存在,如果存在,则放入结果集中,否则继续取下一个子字符串。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution
{
public List<String> findRepeatedDnaSequences(String s)
{
Set<String> set = new HashSet<>();
Set<String> result = new HashSet<>();
for (int i = 0; i <= s.length() - 10; i++)
{
String temp = s.substring(i, i + 10);
if (set.contains(temp))
{
result.add(temp);
}
else
{
set.add(temp);
}
}

return new ArrayList<>(result);
}
}