diff --git a/src/main.rs b/src/main.rs index 9cd62b5..5081428 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,38 +1,26 @@ -use std::collections::HashSet; - struct Solution; impl Solution { - pub fn count_palindromic_subsequence(s: String) -> i32 { + pub fn max_operations(s: String) -> i32 { + let s = s.as_bytes(); let mut ans = 0; - let s = s.bytes().collect::>(); - let mut set : HashSet = HashSet::new(); - for c in b'a'..=b'z' { - set.clear(); - let (mut start,mut end) = (-1,0); - for i in 0..s.len() { - if s[i] == c { - start = i as i32; - break; + let mut ones = 0; + let mut first_zero = false; + for i in 0..s.len() { + if s[i] ==b'1' { + ones += 1; + first_zero = true; + } + else { + if first_zero { + ans += ones; + first_zero = false; } } - if start == -1 { - continue; - } - for i in (0..s.len()).rev() { - if s[i] == c { - end = i; - break; - } - } - for i in (start+1)as usize..end { - set.insert(s[i]); - } - ans += set.len() as i32; } ans } } fn main() { - let result = Solution::count_palindromic_subsequence(String::from("bbcbaba")); + let result = Solution::max_operations(String::from("1001101")); println!("{:?}", result); }