Skip to content

Commit 8c28244

Browse files
committed
feat: add solutions to lc problem: No.0187
No.0187.Repeated DNA Sequences
1 parent 213bd78 commit 8c28244

File tree

4 files changed

+255
-0
lines changed

4 files changed

+255
-0
lines changed

solution/0100-0199/0187.Repeated DNA Sequences/README.md

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,117 @@ public:
147147
};
148148
```
149149
150+
### **C#**
151+
152+
```cs
153+
using System.Collections.Generic;
154+
155+
public class Solution {
156+
public IList<string> FindRepeatedDnaSequences(string s) {
157+
var once = new HashSet<int>();
158+
var moreThanOnce = new HashSet<int>();
159+
int bits = 0;
160+
for (var i = 0; i < s.Length; ++i)
161+
{
162+
bits <<= 2;
163+
switch (s[i])
164+
{
165+
case 'A':
166+
break;
167+
case 'C':
168+
bits |= 1;
169+
break;
170+
case 'G':
171+
bits |= 2;
172+
break;
173+
case 'T':
174+
bits |= 3;
175+
break;
176+
}
177+
if (i >= 10)
178+
{
179+
bits &= 0xFFFFF;
180+
}
181+
if (i >= 9 && !once.Add(bits))
182+
{
183+
moreThanOnce.Add(bits);
184+
}
185+
}
186+
187+
var results = new List<string>();
188+
foreach (var item in moreThanOnce)
189+
{
190+
var itemCopy = item;
191+
var charArray = new char[10];
192+
for (var i = 9; i >= 0; --i)
193+
{
194+
switch (itemCopy & 3)
195+
{
196+
case 0:
197+
charArray[i] = 'A';
198+
break;
199+
case 1:
200+
charArray[i] = 'C';
201+
break;
202+
case 2:
203+
charArray[i] = 'G';
204+
break;
205+
case 3:
206+
charArray[i] = 'T';
207+
break;
208+
}
209+
itemCopy >>= 2;
210+
}
211+
results.Add(new string(charArray));
212+
}
213+
return results;
214+
}
215+
}
216+
```
217+
218+
### **TypeScript**
219+
220+
```ts
221+
function findRepeatedDnaSequences(s: string): string[] {
222+
const n = s.length;
223+
const map = new Map<string, boolean>();
224+
const res = [];
225+
for (let i = 0; i <= n - 10; i++) {
226+
const key = s.slice(i, i + 10);
227+
if (map.has(key) && map.get(key)) {
228+
res.push(key);
229+
}
230+
map.set(key, !map.has(key));
231+
}
232+
return res;
233+
}
234+
```
235+
236+
### **Rust**
237+
238+
```rust
239+
use std::collections::HashMap;
240+
241+
impl Solution {
242+
pub fn find_repeated_dna_sequences(s: String) -> Vec<String> {
243+
let n = s.len();
244+
let mut res = vec![];
245+
if n < 10 {
246+
return res;
247+
}
248+
let mut map = HashMap::new();
249+
for i in 0..=n - 10 {
250+
let key = &s[i..i + 10];
251+
if map.contains_key(&key) && *map.get(&key).unwrap() {
252+
res.push(key.to_string());
253+
}
254+
map.insert(key, !map.contains_key(&key));
255+
}
256+
res
257+
}
258+
}
259+
```
260+
150261
### **...**
151262

152263
```

solution/0100-0199/0187.Repeated DNA Sequences/README_EN.md

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,117 @@ public:
130130
};
131131
```
132132
133+
### **C#**
134+
135+
```cs
136+
using System.Collections.Generic;
137+
138+
public class Solution {
139+
public IList<string> FindRepeatedDnaSequences(string s) {
140+
var once = new HashSet<int>();
141+
var moreThanOnce = new HashSet<int>();
142+
int bits = 0;
143+
for (var i = 0; i < s.Length; ++i)
144+
{
145+
bits <<= 2;
146+
switch (s[i])
147+
{
148+
case 'A':
149+
break;
150+
case 'C':
151+
bits |= 1;
152+
break;
153+
case 'G':
154+
bits |= 2;
155+
break;
156+
case 'T':
157+
bits |= 3;
158+
break;
159+
}
160+
if (i >= 10)
161+
{
162+
bits &= 0xFFFFF;
163+
}
164+
if (i >= 9 && !once.Add(bits))
165+
{
166+
moreThanOnce.Add(bits);
167+
}
168+
}
169+
170+
var results = new List<string>();
171+
foreach (var item in moreThanOnce)
172+
{
173+
var itemCopy = item;
174+
var charArray = new char[10];
175+
for (var i = 9; i >= 0; --i)
176+
{
177+
switch (itemCopy & 3)
178+
{
179+
case 0:
180+
charArray[i] = 'A';
181+
break;
182+
case 1:
183+
charArray[i] = 'C';
184+
break;
185+
case 2:
186+
charArray[i] = 'G';
187+
break;
188+
case 3:
189+
charArray[i] = 'T';
190+
break;
191+
}
192+
itemCopy >>= 2;
193+
}
194+
results.Add(new string(charArray));
195+
}
196+
return results;
197+
}
198+
}
199+
```
200+
201+
### **TypeScript**
202+
203+
```ts
204+
function findRepeatedDnaSequences(s: string): string[] {
205+
const n = s.length;
206+
const map = new Map<string, boolean>();
207+
const res = [];
208+
for (let i = 0; i <= n - 10; i++) {
209+
const key = s.slice(i, i + 10);
210+
if (map.has(key) && map.get(key)) {
211+
res.push(key);
212+
}
213+
map.set(key, !map.has(key));
214+
}
215+
return res;
216+
}
217+
```
218+
219+
### **Rust**
220+
221+
```rust
222+
use std::collections::HashMap;
223+
224+
impl Solution {
225+
pub fn find_repeated_dna_sequences(s: String) -> Vec<String> {
226+
let n = s.len();
227+
let mut res = vec![];
228+
if n < 10 {
229+
return res;
230+
}
231+
let mut map = HashMap::new();
232+
for i in 0..=n - 10 {
233+
let key = &s[i..i + 10];
234+
if map.contains_key(&key) && *map.get(&key).unwrap() {
235+
res.push(key.to_string());
236+
}
237+
map.insert(key, !map.contains_key(&key));
238+
}
239+
res
240+
}
241+
}
242+
```
243+
133244
### **...**
134245

135246
```
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
use std::collections::HashMap;
2+
3+
impl Solution {
4+
pub fn find_repeated_dna_sequences(s: String) -> Vec<String> {
5+
let n = s.len();
6+
let mut res = vec![];
7+
if n < 10 {
8+
return res;
9+
}
10+
let mut map = HashMap::new();
11+
for i in 0..=n - 10 {
12+
let key = &s[i..i + 10];
13+
if map.contains_key(&key) && *map.get(&key).unwrap() {
14+
res.push(key.to_string());
15+
}
16+
map.insert(key, !map.contains_key(&key));
17+
}
18+
res
19+
}
20+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
function findRepeatedDnaSequences(s: string): string[] {
2+
const n = s.length;
3+
const map = new Map<string, boolean>();
4+
const res = [];
5+
for (let i = 0; i <= n - 10; i++) {
6+
const key = s.slice(i, i + 10);
7+
if (map.has(key) && map.get(key)) {
8+
res.push(key);
9+
}
10+
map.set(key, !map.has(key));
11+
}
12+
return res;
13+
}

0 commit comments

Comments
 (0)