rust_test/src/main.rs

34 lines
976 B
Rust
Raw Normal View History

struct Solution;
impl Solution {
pub fn find_anagrams(s: String, p: String) -> Vec<i32> {
if s.len() < p.len() {
return vec![];
}
let mut res = vec![];
let mut p_count = [0; 26];
let mut s_count = [0; 26];
for i in 0..p.len() {
p_count[(p.as_bytes()[i] - b'a') as usize] += 1;
}
for i in 0..p.len() {
s_count[(s.as_bytes()[i] - b'a') as usize] += 1;
}
for i in p.len()..s.len() {
if p_count == s_count {
res.push((i - p.len()) as i32);
}
s_count[(s.as_bytes()[i] - b'a') as usize] += 1;
s_count[(s.as_bytes()[i - p.len()] - b'a') as usize] -= 1;
}
if p_count == s_count {
res.push((s.len() - p.len()) as i32);
}
res
}
}
fn main() {
let sl = Solution::find_anagrams("cbaebabacd".to_string(), "abc".to_string());
println!("{:?}", sl);
}