Skip to content

Commit 7799083

Browse files
authored
Added solution for 2730
1 parent 9127fbc commit 7799083

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
use std::cmp::max;
2+
3+
impl Solution {
4+
// Loop through string and keep counting after how many instances a character is repeated. Maintain these counts in another vector. Keep checking what is the highest total between 2 consecutive values in this list. Return the highest total
5+
pub fn longest_semi_repetitive_substring(s: String) -> i32 {
6+
let mut split_sizes = Vec::new();
7+
let mut current_split_counter = 0;
8+
let mut largest_continous_split_size = 0;
9+
let mut prev_char:char = '-';
10+
for c in s.chars() {
11+
if prev_char == c {
12+
split_sizes.push(current_split_counter);
13+
if split_sizes.len() > 1 {
14+
largest_continous_split_size = max(largest_continous_split_size, (split_sizes[split_sizes.len() - 1] + split_sizes[split_sizes.len() - 2]));
15+
}
16+
current_split_counter = 0;
17+
}
18+
prev_char = c;
19+
current_split_counter += 1;
20+
}
21+
22+
split_sizes.push(current_split_counter);
23+
24+
if split_sizes.len() > 1 {
25+
largest_continous_split_size = max(largest_continous_split_size, (split_sizes[split_sizes.len() - 1] + split_sizes[split_sizes.len() - 2]));
26+
} else {
27+
largest_continous_split_size = split_sizes[split_sizes.len() - 1];
28+
}
29+
30+
return (largest_continous_split_size) as i32;
31+
}
32+
}

0 commit comments

Comments
 (0)