Problem Statement
Consider a simple Input/Output system. The system input consists of a button that you can press, while the system output consists of an audible beep. The system logic consists of a state machine that transitions from one state to the next every time the button is pressed. At the last state, the machine transitions to the first state when the button is pressed. On some state transitions, the audible beep is sounded, and on others it is not. The pattern of beeps mapped to states is known ahead of time.
You are given a
Definition
- Class:
- SimpleIO
- Method:
- worstCase
- Parameters:
- String, int
- Returns:
- int
- Method signature:
- int worstCase(String pattern, int targetState)
- (be sure your method is public)
Constraints
- pattern will have between 2 and 50 characters, inclusive.
- pattern will only contain the characters 'B' and 'N'.
- targetState will be between 0 and the length of pattern - 1, inclusive.
Examples
"BNB"
0
Returns: 4
In the worst case, the first state is state 2. In this case, you press the button 2 times before we narrow down that the state is now state 1. You must now press the button 2 more times to get back to state 0.
"BNBNBNBN"
3
Returns: -1
In this case, we can only tell if we are on an even or odd state, we cannot determine the exact state.
"BBNNBNBBBBNBBBBBB"
3
Returns: 18
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBN"
48
Returns: 98
"BNNBNNBNNBNNB"
6
Returns: 20
"BNBBNBBBNBBBBNBBBBBNBBBBBBN"
15
Returns: 34
"BBBBNNNBBNBBBNNNNNBNBBNBBBBBNNNBBNBBBNNNNNBNBBNB"
4
Returns: -1
"BBBBNNBBBBNNBBBBNNBBBBNNBBBBNN"
21
Returns: -1
"NBBBBNNBNNBNNBNBBBBNNBNNBNNBNBBBBNNBNNBNNB"
28
Returns: -1
"NBBNBBBBBNNBBBBBNBNNN"
13
Returns: 25
"NNNNNNBNNNNNNN"
0
Returns: 22
"BBNBBNBBBBNBNNNNNBBBBBBNBBBB"
0
Returns: 34
"BNNBNNNNNNNNBBNNNBNNNNNBNBBB"
4
Returns: 32
"NNBNNBBNNBNNBNBNBBBBNBBNBN"
4
Returns: 31
"BNBBNNNNNBB"
1
Returns: 14
"BBNBBBNBBNBBBNBBNBBBNBBNBBBN"
16
Returns: -1
"NBBBNNNBNBNNNBBNNBBNNNB"
6
Returns: 28
"NBBBNBNN"
2
Returns: 10
"NBNNNBBNBBNNNBNNNNBNNNBBNBBNNNBNNN"
23
Returns: -1
"NNBNBNNBBBNNBNBBNNBNBNNBBBNNBNBBNNBNBNNBBBNNBNBB"
25
Returns: -1
"NNBBNNNNNBBBBBNNNNNNBBNNNNNBBBBBNNNN"
28
Returns: -1
"NBBNNBNNBBNBNNNNNBNNNBBBBNNNNBNNBNBNBNNBNNNNN"
35
Returns: 50
"BBNNBBNNBBNNBBNNBBNNBBNNBBNNBBNNBBNN"
1
Returns: -1
"BBNBNBNNNBBBNBBNNNNBBNNBNBBNBNNBBNNBBBNB"
7
Returns: 45
"BNNNNBNB"
7
Returns: 10
"BNNBNNBNBNBBNNNNBNBBNBBBBBBNBNNNNNBBBBBBBNNBN"
40
Returns: 51
"NNNNBBBBBNNNBNBBBNNNBN"
19
Returns: 28
"NNBNNBBBBNNNNNBNNBBBBNNN"
0
Returns: -1
"BNBNNBNBNBBBNBBNBBNNBNNBNBNNBNBNBBBNBBNBBNNBNN"
18
Returns: -1
"NNBBNBNNBNNNBBNBNNBNNNBBNBNNBNNNBBNBNNBN"
13
Returns: -1
"BNBBBBNBBNNNBNBBBBNBBNNNBNBBBBNBBNNNBNBBBBNBBNNN"
19
Returns: -1
"NNNBNNNNNBNNNNNBNN"
5
Returns: -1
"BBNNBNBNNNBBBBBBNNBBNNBNBNNNBBBBBBNN"
12
Returns: -1
"BBNN"
1
Returns: 5
"NBNNBNNBNBNNBNNBNBNNBNNBNBNNBNNBNBNNBNNB"
0
Returns: -1
"BNBNNNBNBNBNNNBNBNBNNNBNBNBNNNBN"
31
Returns: -1
"NNNNNNBNNBBNNBBNB"
12
Returns: 20
"BNBBBNBBNNBNNBBNBNNNBNNBBBNBBBNNBNNNBBBNN"
30
Returns: 47
"NNBNNBNNNBNBNNBBNNBNBNNNBNNBNNNBNBNNBBNNBNBN"
42
Returns: -1
"BBBNNNNNNBBBNNNNNNBBBNNNNNNBBBNNNNNN"
13
Returns: -1
"NNBBNBNBN"
7
Returns: 12
"NBBNNBBBNNBBNBBNNBNBBBBBNBBB"
19
Returns: 31
"BNNBBNBBNBBNBNNBBNNBBBB"
22
Returns: 27
"NBNNNNBNBBNBBBNBBBNNNBNNBNNNNBNBBNBBBNBBBNNNBN"
27
Returns: -1
"BNNNBBBBNBNNNNNNNNNBNBNNNBBBBNBNNNNNNNNNBN"
20
Returns: -1
"BBBBBBBBBBBB"
8
Returns: -1
"NNNNNNNNNBBBNNNNNNNNNBBB"
18
Returns: -1
"NBNBBNNNBNBBNNBNNNNBNNBNBBBNNBNBBNNNBBBBNB"
31
Returns: 48
"NNBNNNBBNNBBNNBBBBNNBNBBNBBNBNNBBNBN"
20
Returns: 41
"NBBBNBBNBNBBBNBBNBNBBBNBBNBNBBBNBBNBNBBBNBBNB"
37
Returns: -1
"BBBNBBBNBBNNNBNBBNBNNBBBNBNN"
27
Returns: 34
"NBNNBBBBBBNBBBNNNNNNNNNBNNBBBBBBNBBBNNNNNNNN"
10
Returns: -1
"NNBBNNBBNNBNBNBNNBBNNBBNNBNBNBNNBBNNBBNNBNBNB"
22
Returns: -1
"BBBNBNBNBN"
3
Returns: 12
"BBNNNBBBBBNBNNNBBNBBNNNBBBBBNBNNNBBN"
4
Returns: -1
"BNBNBNBNBNBNBNBNBNBN"
17
Returns: -1
"NBNBNNB"
1
Returns: 11
"BBNBNBBBBNNBNBBBNBNBNBNBBBBBBBBBNNNNBNBNBBBBBBBBNN"
44
Returns: 60
"BNNBNNBNN"
3
Returns: -1
"BN"
0
Returns: 2
"BBBBBBBBBNBB"
0
Returns: 15