3120. 统计特殊字母的数量 I
This commit is contained in:
parent
985c978958
commit
b88bfb137b
44
src/main.rs
44
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::<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")));
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue