From b88bfb137b4405f7540cb15502d1cc0e1fc6ac99 Mon Sep 17 00:00:00 2001 From: li_chx Date: Tue, 26 May 2026 08:40:54 +0800 Subject: [PATCH] =?UTF-8?q?3120.=20=E7=BB=9F=E8=AE=A1=E7=89=B9=E6=AE=8A?= =?UTF-8?q?=E5=AD=97=E6=AF=8D=E7=9A=84=E6=95=B0=E9=87=8F=20I?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.rs | 44 +++++++++++++++----------------------------- 1 file changed, 15 insertions(+), 29 deletions(-) diff --git a/src/main.rs b/src/main.rs index e93eae4..e257c5f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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::>(); - 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"))); }