Problem Statement
Penguin Pals is a match making service that matches penguins to new friends, using the following procedure:
- Each penguin is asked a single question: "Do you prefer the color blue, or the color red?"
- All penguins are arranged so that they stand on a circle, equally spaced.
- The organizers draw some straight lines, connecting some pairs of penguins. Each penguin may only be connected to at most one other penguin. Two penguins cannot be connected if they prefer a different color.
- Each penguin who is connected to some other penguin follows the line to find their match.
The only problem with the above system was that it allowed penguins to collide if two lines crossed each other. Therefore, a new additional rule was adopted: no two lines may cross. Penguin Pals now has some penguins arranged on a circle (after step 2 of the above procedure). They need to know the maximum number of pairs of penguins they can create.
You are given a
Definition
- Class:
- PenguinPals
- Method:
- findMaximumMatching
- Parameters:
- String
- Returns:
- int
- Method signature:
- int findMaximumMatching(String colors)
- (be sure your method is public)
Constraints
- colors will contain between 1 and 50 characters, inclusive.
- Each character of colors will be either 'R' or 'B'.
Examples
"RRBRBRBB"
Returns: 3
In this picture the penguins have been colored in their preferred color.
"RRRR"
Returns: 2
"BBBBB"
Returns: 2
"RBRBRBRBR"
Returns: 4
"RRRBRBRBRBRB"
Returns: 5
"R"
Returns: 0
"RBRRBBRB"
Returns: 3
"RBRBBRBRB"
Returns: 4
"B"
Returns: 0
"BRBRBRBRBRB"
Returns: 5
"RBRBRBRBRBR"
Returns: 5
"RRRBBBRRRBBBRBRBRBRB"
Returns: 9
"RR"
Returns: 1
"BB"
Returns: 1
"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
Returns: 25
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
Returns: 25
"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
Returns: 24
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
Returns: 24
"RBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRB"
Returns: 24
"BRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBR"
Returns: 24
"RBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBR"
Returns: 24
"BRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRB"
Returns: 24
"RRRRRBBBBBRRRRRBBBBBRRRRRBBBBBRRRRRBBBBBRRRRRBBBBB"
Returns: 24
"RBRBRBRBRBRBRBRBRBRBRBRRBRBRBRBRBRBRBRB"
Returns: 19
"RB"
Returns: 0
"BR"
Returns: 0
"RBR"
Returns: 1
"BRB"
Returns: 1
"BRRB"
Returns: 2
"RBRRRRRRBRRBRRBRBBRRRR"
Returns: 11
"BBBBBBBBBBBBBB"
Returns: 7
"RBRBBRBRBBRBRBRBBRBRBRBBRBRBRBRBR"
Returns: 16
"BBRBBRRBBBRR"
Returns: 5
"BBRRBBBRBRBBRBBBRBBBBBRRBBBB"
Returns: 14
"RRRRRRRRRRRRRRRRRRRRRRBB"
Returns: 12
"RBBRBBRBBBBBBBBB"
Returns: 7
"RBBBBBBBBBBBBBBBBBBBBBBBBBBRBR"
Returns: 14
"BBBRBBBBRRBBBRRB"
Returns: 7
"RRRRRRRRRRRRRRRRRRRRRRRRBRRRRRRRRRRRRRRRRRRRRRRRRR"
Returns: 24
"RRRRRRRBRRRRBRBRRRRRBRRRRRRRRBRBRRBRBRRRRBBRBRRB"
Returns: 23
"BRBBBBBBBBRRRRBRBRRRRRB"
Returns: 11
"BRRRBRBRBRRRRRRRBBRRRBRRRRBRRR"
Returns: 14
"BBBBBBBBRBBBBBRRBBBBBBBBBBBBBBBBBBBBBBBB"
Returns: 19
"BRRBRRRRRRBRRRRRRBRRBRBRRRBRRRBRRRRBRRBR"
Returns: 19
"RRRRRRRRRRRRRRBRRRRRRRRRRRRRRRRRRBRRBRRRRRR"
Returns: 21
"RRRRRRBRBRRRBRBRRRRBRB"
Returns: 10
"BRBBBBBRBBBBBBBB"
Returns: 7
"RBBBBBRRRBBRBRBRBRBBBRRRB"
Returns: 12
"RRRBBRR"
Returns: 3
"RRRBBBRRRBBBRRRBBBRRRBBBRRRBBBRRRBBBRRRBBBRBRBBBBB"
Returns: 24
"BRBBBBRRBBRBRBBRRRRRBRBBRRRBBBBRRRBBBRBRBBBBRBRRBR"
Returns: 24
"RRBRBRBBRRBRBRBBRRBRBRBBRRBRBRBBRRBRBRBBRRBRBRBB"
Returns: 23
"RRRRBBRBBRBRBRR"
Returns: 7
"RRBBRRBBBRBRRBRBRBRBRBRBRBRBBRRBRBRBRBBBBBBBBRRRRB"
Returns: 24
"BRBRRBBRRRRBRBRBBBBRRBRRRBBRBRBBRRBBRBBRRBB"
Returns: 21
"RRRRRRRRRRBBBBBBBBBBRRRRRRRRRRBBBBBBBBBBRRRRRRRRRR"
Returns: 25
"RRRRBBBBBRRBRBRBRRRRBBR"
Returns: 11
"RBRBRBRBRBBBBBRRRRRRBRBRBRBRBRBRBRBRBRBRBRBRBRBRB"
Returns: 24
"RRRBBBRBRBBRBBRRRRRRRRBBBRRBRBRBRRRRBRBBBRRRBBRRB"
Returns: 24
"RRRBRBRBRBRBBBBBRR"
Returns: 8
"RBBRRBBRRRRBBRBRBRBRBRRBBRBBRRBRBBRBRBRBRBRBRRRRR"
Returns: 24
"RRBBRRBB"
Returns: 4
"RBRRBRRRBRRRRBBRBRBRBRBRBRBRBRBRBRBRBBBBBRRRRRRRRR"
Returns: 24
"RRBB"
Returns: 2
"RBRBBRRRRRRBBBB"
Returns: 7
"RRRBBR"
Returns: 3
"RBRBRBRBRBBRBRBRBBRBRBBBRBRBBRBRBRBBRBBBRBBBRBB"
Returns: 23
"RRRRRRRBBRBRRBRRRRR"
Returns: 9
"RRRRRRB"
Returns: 3
"RBBR"
Returns: 2
"BRRBBRBRBRRBBRBRBRRBBRBRBRBBRRBRBRBRBRBRRBRBRBRBRB"
Returns: 24
"RBRBBBRBRBR"
Returns: 5
"RBRBBRBRRRBRRRBRRBRBRRRBRRBBBR"
Returns: 15
"RRRRRRRRRRRRRRBBBBBBBBRRRRRRRRBBBBBBBBBBBBBBBBBB"
Returns: 24
"RBBRRBRBBRRRBBBRRRRRBRBBRRBRRRBBBRBBBBBBRBBRRBRBRB"
Returns: 25
"RBRRBBBRBRBRRBBBRRBRBBBRRRBBBRRBRBRBRRBBBBRRBRBBRB"
Returns: 24
"BRRBRRB"
Returns: 3
"RBBRBBRRRB"
Returns: 4
"RBRBBBRBRB"
Returns: 4
"RBRBRBRBRRBRRRBBBBBRRBRBBRBRBRBBBRRBBBRRRRBBRBBRRB"
Returns: 24
"RBBRRRRRBB"
Returns: 5
"RBBRRRRBRBBRBRRBBRBRBRRRBRBBBRBRBBRBRBRBRBRBBRBRB"
Returns: 24
"RBRB"
Returns: 1
"RBRRRRBBBBRRBRBRBBBBBRBRRRRRRBBBRRBBRRRRBBBRRRRRRR"
Returns: 24
"RBRRRBRRBRBRBRBRBRRRRBRBRBRBRBRBRBRBRBBRRBBRBBRRB"
Returns: 24
"RRBRBRRRBRRBRRBBRRRBBBRRRRBBBBRRBRBRBRBRBBRBRBRRBB"
Returns: 24
"BRRBRBBR"
Returns: 4
"RBB"
Returns: 1
"RBRBRBRBBBBRRRRRBBBBBRRRRBBBRRRBBRBRBRBRRRBBBRBRRB"
Returns: 24
"RRR"
Returns: 1
"RRBRBRRRRBRRBRBR"
Returns: 7
"RBBRRBBRRRRBBRBRBRBRBRRBBRBBRRBRBBRBRBRBRBRBRRRRRR"
Returns: 25
"RRRBBBRRRBBB"
Returns: 5
"RBRBRBBBBBBBBRRBBRBBBBRBRBBBRRBBBRRRRBRRBRRBBRRRRR"
Returns: 24
"RBRBBRRBRBRBRBBBBBBBRRRBRBRRRBBRBRBRBRBRBRBRBRBRBR"
Returns: 24
"RRRRBB"
Returns: 3
"RBRRBR"
Returns: 3
"RRRRRRRRBBBRRRBBBRRR"
Returns: 9
"RRRBBRBB"
Returns: 4
"RBRBBBRBBBBBRRRRRBRBRBBRBRBRRBRBRRRRRRBBBBBBBBRBR"
Returns: 24
"BRBRBBRBRB"
Returns: 5
"RRBBBB"
Returns: 3
"BRRRBBBRRRRBBBRRRBBRBRBRBRBBBBBRRRRBRBBRBRBRBRBRBR"
Returns: 24
"RBBBBRBBBRRBRRBRRRBBBBBBBBBBBBRRRRRRRBRBRBRRRBRBRB"
Returns: 24
"RBBBRRRBRBRBBRRRRBBBBRRRBBBRRRRRRBBBRRBBBBBRRR"
Returns: 22
"RRBRBRBRB"
Returns: 4
"RBRBRB"
Returns: 2
"BRRRBB"
Returns: 2
"RRBRBRRRRBRRBRBRBBBBBBBBBBBBBBBBRRRBRRR"
Returns: 19
"RBBRBRBBRRBBR"
Returns: 6
"RBRBRBBRBRBRBRBBRBRBRBRBBRBRBRBRRBRBBRRBRBRRBRBRBB"
Returns: 25
"BRBRBRBRBRBBRBRBRBRBBRBBBBBBBBRRRBRBRRBRBRRBBRBRBR"
Returns: 24
"RBRBBRBRBRRBRBBR"
Returns: 8
"BRBBRRRBRBBRRR"
Returns: 7
"RRBBBRRRBBRRRBRBRRBBRRRBBRBRRBRRBRRBBBRBRBBRBBRRBB"
Returns: 24
"BRBRBRBRBRBBRBRBRBRBBRBBBBBRRRRRRBRRBBRBRBR"
Returns: 21
"RRBRBRBBRBBRBRBBRBRBRRBBBRRBRBBRBRBRRBBBRRBRBBBBRB"
Returns: 24
"RBRBRBRRBBRBRRBBRBRBRBRBRRRRRBBRBBBRRBBBBRBRBBBRRR"
Returns: 24
"RRRRBBBBBRBRBRBRBBBBBRRRRBBBBRRRRRBRBBBRR"
Returns: 20
"RRBBRBRBRBRBRRRBBRRBRRBRBRBRRRRBBRRRBBBRRRBBBBRBR"
Returns: 24
"RRBRBRBRRBBBBBBRRRBRBBBBBBRBRBRBBBBBBBBRBRRRRBRBRR"
Returns: 24
"RBRBRBRBRBRBRBRBRBRBRBRRBRRBRBRBRRRBBRBRRBRBRBRBRB"
Returns: 24
"RRBBBBRBRBRBBBRRBBBRRBBBRRR"
Returns: 13
"RBRBRBRB"
Returns: 3
"RBRBRBRBRRRRRRRBBBBBBBRRRRRBBBB"
Returns: 15
"RRRRRBRRBBRBRBBBB"
Returns: 8
"RBRBRRBB"
Returns: 3
"RRRRRRRRRRRRRRRRRRRRRRRRRBBBBBBBBBBBBBBBBBBBBBBBBB"
Returns: 24
"RBRBRRBBBRRRRRBBBRRBRBRBBRBRBRBBBBBBRBRRBBRBBRBRBR"
Returns: 24