3120. 统计特殊字母的数量 I

This commit is contained in:
li_chx 2026-05-26 08:40:54 +08:00
parent 985c978958
commit b88bfb137b
Signed by: li_chx
GPG Key ID: C7CF27EFA1E58BAC
1 changed files with 15 additions and 29 deletions

View File

@ -1,39 +1,25 @@
mod arr;
struct Solution {}
impl Solution {
pub fn can_reach(s: String, min_jump: i32, max_jump: i32) -> bool {
let arr = s
.chars()
.enumerate()
.filter_map(|c| if c.1 == '0' { Some(c.0)} else { None })
.collect::<Vec<_>>();
if arr[arr.len() - 1] != s.len() - 1 {
return false;
}
let mut can_reach = vec![false; arr.len()];
can_reach[0] = true;
let mut last_can_reach = 0;
for i in 0..arr.len() {
if !can_reach[i] {
continue;
}
let start = arr[i] + min_jump as usize;
let end = arr[i] + max_jump as usize;
for j in last_can_reach + 1..arr.len() {
if arr[j] < start {
continue;
}
if arr[j] > end {
break;
}
can_reach[j] = true;
last_can_reach = j;
pub fn number_of_special_chars(word: String) -> i32 {
let mut arr = vec![0;26];
for ch in word.chars() {
if ch as u8 >= 97 {
arr[ch as usize - 97] |= 1;
}else {
arr[ch as usize - 65] |= 2;
}
}
can_reach[arr.len() - 1]
let mut ans = 0;
for t in arr {
if t == 3 {
ans += 1;
}
}
ans
}
}
fn main() {
println!("{:?}", Solution::can_reach(String::from("0110110"), 2, 3));
println!("{:?}", Solution::number_of_special_chars(String::from("aaAbcBC")));
}