Skip to main content
Back to problems
#2103
Easy Algorithms

Rings and rods

Hash Table String
81.5% acceptance
Feb 25, 2026
1027
21
There are n rings and each ring is either red, green, or blue. The rings are distributed across ten rods labeled from 0 to 9. You are given a string rings of length 2n that describes the n rings that are placed onto the rods. Every two characters in rings forms a color-position pair that is used to describe each ring where: The first character of the ith pair denotes the ith ring's color ('R', 'G', 'B'). The second character of the ith pair denotes the rod that the ith ring is placed on ('0' to '9'). For example, "R3G2B1" describes n == 3 rings: a red ring placed onto the rod labeled 3, a green ring placed onto the rod labeled 2, and a blue ring placed onto the rod labeled 1. Return the number of rods that have all three colors of rings on them.

Solution

Rust
Time O(n)
Space O(1)
LeetCode
solution.rs
impl Solution {
  pub fn count_points(rings: String) -> i32 {
    let chars: Vec<u8> = rings.bytes().collect();
    let mut rods = [0u8; 10];
    let mut i = 0;
    while i < chars.len() {
      let bit = match chars[i] {
        b'R' => 1u8,
        b'G' => 2u8,
        b'B' => 4u8,
        _ => 0u8,
      };
      let rod = (chars[i + 1] - b'0') as usize;
      rods[rod] |= bit;
      i += 2;
    }
    rods.iter().filter(|&&r| r == 7).count() as i32
  }
}