Skip to main content
Back to problems
#3823
Easy Algorithms

Reverse letters then special characters in a string

Two Pointers String Simulation
81.7% acceptance
Mar 16, 2026
51
3
Reverse lowercase letters in their positions, then reverse special characters in their positions.

Solution

Rust
Time O(n)
Space O(1)
LeetCode
solution.rs
impl Solution {
  pub fn reverse_by_type(s: String) -> String {
    let mut chars: Vec<char> = s.chars().collect();

    // Collect and reverse letters
    let mut letters: Vec<char> = chars.iter().filter(|c| c.is_ascii_lowercase()).copied().collect();
    letters.reverse();

    // Collect and reverse special characters
    let mut specials: Vec<char> = chars.iter().filter(|c| !c.is_ascii_lowercase()).copied().collect();
    specials.reverse();

    let mut li = 0;
    let mut si = 0;
    for c in chars.iter_mut() {
      if c.is_ascii_lowercase() {
        *c = letters[li];
        li += 1;
      } else {
        *c = specials[si];
        si += 1;
      }
    }
    chars.into_iter().collect()
  }
}