- The DNA sequence is composed of a series of nucleotides abbreviated as 'A', 'C', 'G', and 'T'.
- For example, "ACGAATTCCG" is a DNA sequence.
- When studying DNA, it is useful to identify repeated sequences within the DNA.
- Given a string s that represents a DNA sequence, return all the 10-letter-long sequences (substrings) that occur more than once in a DNA molecule. You may return the answer in any order.
Input: s = "AAAAAAAAAAAAA"
Output: ["AAAAAAAAAA"]
Constraints:- 1 <= s.length <= 105
- s[i] is either 'A', 'C', 'G', or 'T'.
Java:
class Solution {
public List<String> findRepeatedDnaSequences(String s) {
Map<String, Integer> map = new HashMap<>();
for (int i = 0; i <= s.length() - 10; i++) {
String substring = s.substring(i, i+10);
map.put(substring, map.getOrDefault(substring, 0) + 1);
}
List<String> list = new ArrayList<>();
for (Map.Entry<String, Integer> item : map.entrySet()) {
if (item.getValue() > 1) {
list.add(item.getKey());
}
}
return list;
}
}
Python:class Solution:
def findRepeatedDnaSequences(self, s: str) -> List[str]:
n = len(s)
cnt = defaultdict(int)
for i in range(n - 9):
cnt[s[i:i+10]] += 1
ans = []
for key, value in cnt.items():
if value >= 2: # Found a string that occurs more than once
ans.append(key)
return ans
No comments:
Post a Comment