问题描述
给定一个字符串,只包含 A
、C
、G
、T
四个字母,要求找出所有长度是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); } }
|