1930. 长度为 3 的不同回文子序列
This commit is contained in:
parent
67d79e3553
commit
4b8594e8e3
48
src/main.rs
48
src/main.rs
|
|
@ -1,34 +1,38 @@
|
||||||
mod arr;
|
use std::collections::HashSet;
|
||||||
|
|
||||||
struct Solution;
|
struct Solution;
|
||||||
impl Solution {
|
impl Solution {
|
||||||
pub fn intersection_size_two(intervals: Vec<Vec<i32>>) -> i32 {
|
pub fn count_palindromic_subsequence(s: String) -> i32 {
|
||||||
let mut tasks = intervals;
|
let mut ans = 0;
|
||||||
tasks.sort_by_key(|task| task[1]);
|
let s = s.bytes().collect::<Vec<u8>>();
|
||||||
let mut stack:Vec<Vec<i32>> = Vec::new();
|
let mut set : HashSet<u8> = HashSet::new();
|
||||||
stack.push(vec![-2,-2,0]);
|
for c in b'a'..=b'z' {
|
||||||
for task in tasks.iter() {
|
set.clear();
|
||||||
let start = task[0];
|
let (mut start,mut end) = (-1,0);
|
||||||
let end = task[1];
|
for i in 0..s.len() {
|
||||||
let mut d = 2;
|
if s[i] == c {
|
||||||
let pos = stack.partition_point(|x| x[0] < start) - 1;
|
start = i as i32;
|
||||||
d -= stack[stack.len() - 1][2] - stack[pos][2];
|
break;
|
||||||
if start <= stack[pos][1] {
|
}
|
||||||
d -= stack[pos][1] - start + 1;
|
|
||||||
}
|
}
|
||||||
if d <= 0{
|
if start == -1 {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
while end - stack[stack.len() - 1][1] <= d {
|
for i in (0..s.len()).rev() {
|
||||||
let end = stack.pop().unwrap();
|
if s[i] == c {
|
||||||
d += end[1] - end[0] + 1;
|
end = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
stack.push(vec![end - d + 1, end,stack[stack.len() - 1][2] + d]);
|
for i in (start+1)as usize..end {
|
||||||
|
set.insert(s[i]);
|
||||||
|
}
|
||||||
|
ans += set.len() as i32;
|
||||||
}
|
}
|
||||||
stack[stack.len() - 1][2]
|
ans
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let result = Solution::intersection_size_two(arr::make_matrix("[[1,3],[3,7],[8,9]]"));
|
let result = Solution::count_palindromic_subsequence(String::from("bbcbaba"));
|
||||||
println!("{:?}", result);
|
println!("{:?}", result);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue