2103. Rings and Rods LeetCode Solution

In this guide, you will get 2103. Rings and Rods LeetCode Solution with the best time and space complexity. The solution to Rings and Rods problem is provided in various programming languages like C++, Java, and Python. This will be helpful for you if you are preparing for placements, hackathons, interviews, or practice purposes. The solutions provided here are very easy to follow and include detailed explanations.

Table of Contents

  1. Problem Statement
  2. Complexity Analysis
  3. Rings and Rods solution in C++
  4. Rings and Rods solution in Java
  5. Rings and Rods solution in Python
  6. Additional Resources
2103. Rings and Rods LeetCode Solution image

Problem Statement of Rings and Rods

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.

Example 1:

Input: rings = “B0B6G0R6R0R6G9”
Output: 1
Explanation:
– The rod labeled 0 holds 3 rings with all colors: red, green, and blue.
– The rod labeled 6 holds 3 rings, but it only has red and blue.
– The rod labeled 9 holds only a green ring.
Thus, the number of rods with all three colors is 1.

Example 2:

Input: rings = “B0R0G0R9R0B0G0”
Output: 1
Explanation:
– The rod labeled 0 holds 6 rings with all colors: red, green, and blue.
– The rod labeled 9 holds only a red ring.
Thus, the number of rods with all three colors is 1.

Example 3:

Input: rings = “G4”
Output: 0
Explanation:
Only one ring is given. Thus, no rods have all three colors.

Constraints:

rings.length == 2 * n
1 <= n <= 100
rings[i] where i is even is either 'R', 'G', or 'B' (0-indexed).
rings[i] where i is odd is a digit from '0' to '9' (0-indexed).

Complexity Analysis

  • Time Complexity: O(n)
  • Space Complexity: O(10) = O(1)

2103. Rings and Rods LeetCode Solution in C++

class Solution {
 public:
  int countPoints(string rings) {
    vector<int> colors(10);

    for (int i = 0; i < rings.length(); i += 2) {
      const int c = rings[i];
      const int color = c == 'R' ? 1 : c == 'G' ? 2 : 4;
      colors[rings[i + 1] - '0'] |= color;
    }

    return ranges::count(colors, 7);
  }
};
/* code provided by PROGIEZ */

2103. Rings and Rods LeetCode Solution in Java

class Solution {
  public int countPoints(String rings) {
    int[] colors = new int[10];

    for (int i = 0; i < rings.length(); i += 2) {
      final char c = rings.charAt(i);
      final int color = c == 'R' ? 1 : c == 'G' ? 2 : 4;
      colors[rings.charAt(i + 1) - '0'] |= color;
    }

    return (int) Arrays.stream(colors).filter(c -> c == 7).count();
  }
}
// code provided by PROGIEZ

2103. Rings and Rods LeetCode Solution in Python

class Solution:
  def countPoints(self, rings: str) -> int:
    colors = [0] * 10

    for c, num in zip(rings[::2], rings[1::2]):
      color = 1 if c == 'R' else 2 if c == 'G' else 4
      colors[int(num)] |= color

    return sum(color == 7 for color in colors)
# code by PROGIEZ

Additional Resources

Happy Coding! Keep following PROGIEZ for more updates and solutions.