diff --git a/solutions/modify_letter/src/lib.rs b/solutions/modify_letter/src/lib.rs index 556d514c..5a3be843 100644 --- a/solutions/modify_letter/src/lib.rs +++ b/solutions/modify_letter/src/lib.rs @@ -3,28 +3,17 @@ pub fn remove_letter_sensitive(s: &str, letter: char) -> String { } pub fn remove_letter_insensitive(s: &str, letter: char) -> String { - let lower_letter = letter.to_lowercase().to_string(); - let upper_letter = letter.to_uppercase().to_string(); - s.replace(&upper_letter, &lower_letter) - .replace(&lower_letter, "") + s.chars().filter(|&c| c.to_ascii_lowercase() != letter.to_ascii_lowercase()).collect() } pub fn swap_letter_case(s: &str, letter: char) -> String { - s.split("") - .into_iter() - .map(|s| { - s.chars() - .filter_map(|c| { - if c.to_string() == letter.to_lowercase().to_string() { - c.to_uppercase().next() - } else if c.to_string() == letter.to_uppercase().to_string() { - c.to_lowercase().next() - } else { - Some(c) - } - }) - .collect() - }) - .collect::>() - .join("") + s.chars() + .map(|c| ( + if c.to_ascii_lowercase() == letter.to_ascii_lowercase() { + if c.is_ascii_lowercase() { c.to_ascii_uppercase() } else { c.to_ascii_lowercase() } + } else { + c + } + )) + .collect() }