leetcode/src/problem/p3174_clear_digits.rs
2024-10-24 09:08:13 +08:00

47 lines
986 B
Rust

/**
* [3174] Clear Digits
*/
pub struct Solution {}
// submission codes start here
impl Solution {
pub fn clear_digits(s: String) -> String {
let s: Vec<char> = s.chars().collect();
let mut mark = vec![true; s.len()];
for (i, &c) in s.iter().enumerate() {
if !c.is_ascii_digit() {
continue;
}
// 是数字
mark[i] = false;
let mut last = i - 1;
while !mark[last] {
last -= 1;
}
mark[last] = false;
}
s.iter()
.enumerate()
.filter_map(|(i, &c)| if mark[i] { Some(c) } else { None })
.collect()
}
}
// submission codes end
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_3174() {
assert_eq!("abc".to_owned(), Solution::clear_digits("abc".to_owned()));
assert_eq!("".to_owned(), Solution::clear_digits("cb34".to_owned()));
}
}