DEV Community

Shashank Shekhar
Shashank Shekhar

Posted on

4 3

Rings and Rods | Leetcode Problem Solution Using Bit Manipulation

Problem Statement

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.

Sample Input
B0B6G0R6R0R6G9

Sample 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.

Link to question: https://leetcode.com/problems/rings-and-rods/

Solution (C++)

class Solution {
    public int countPoints(String rings) {
        int count, n=rings.length();
        int rods[]=new int[10];
        Arrays.fill(rods, 0);
        for(int i=0; i<n; i+=2) {
            char color=rings.charAt(i);
            int rod=rings.charAt(i+1)-48;
            switch(color) {
                case 'R':
                    rods[rod]=rods[rod] | 1;
                    break;
                case 'G':
                    rods[rod]=rods[rod] | 2;
                    break;
                case 'B':
                    rods[rod]=rods[rod] | 4;
                    break;
            }
        }
        count=0;
        for(int item: rods)
            count+=item==7?1:0;
        return count;
    }
};
Enter fullscreen mode Exit fullscreen mode

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay