Problem Statement
After she raises the barn, Applejack will build a wall that will divide the barn into two separate parts: one containing the first k sections and the other containing the last N-k sections, for some integer k. Each part must contain at least one section. (I.e., k must be between 1 and N-1, inclusive.) Additionally, Applejack wants both parts to contain exactly the same number of cows.
Return the number of possible positions for the wall. In other words, return the number of choices for the integer k such that all the conditions above are satisfied.
Definition
- Class:
- RaiseThisBarn
- Method:
- calc
- Parameters:
- String
- Returns:
- int
- Method signature:
- int calc(String str)
- (be sure your method is public)
Constraints
- str will contain between 2 and 50 characters, inclusive.
- Each character in str will be 'c' or '.'.
Examples
"cc..c.c"
Returns: 3
Applejack can choose k=2, k=3, or k=4. The three corresponding solutions are shown below, with '|' representing the wall between the two parts. cc|..c.c cc.|.c.c cc..|c.c
"c....c....c"
Returns: 0
There is an odd number of cows. It is impossible to divide them into two equal halves.
"............"
Returns: 11
This is a barn with 12 empty sections. It can be divided in 11 different ways: into 1+11 sections, 2+10 sections, ..., or 11+1 sections.
".c.c...c..ccc.c..c.c.cc..ccc"
Returns: 3
".."
Returns: 1
"c."
Returns: 0
".c"
Returns: 0
"cc"
Returns: 1
"..."
Returns: 2
"c.."
Returns: 0
".c."
Returns: 0
"cc."
Returns: 1
"..c"
Returns: 0
"c.c"
Returns: 2
".cc"
Returns: 1
"ccc"
Returns: 0
"...."
Returns: 3
"c..."
Returns: 0
".c.."
Returns: 0
"cc.."
Returns: 1
"..c."
Returns: 0
"c.c."
Returns: 2
".cc."
Returns: 1
"ccc."
Returns: 0
"...c"
Returns: 0
"c..c"
Returns: 3
".c.c"
Returns: 2
"cc.c"
Returns: 0
"..cc"
Returns: 1
"c.cc"
Returns: 0
".ccc"
Returns: 0
"cccc"
Returns: 1
"c.ccc"
Returns: 1
"c.cccc"
Returns: 0
"cc.ccc."
Returns: 0
".c.cccc."
Returns: 0
".cc....c."
Returns: 0
".c..cc.c.c"
Returns: 0
"......cccc."
Returns: 1
"....c....cc."
Returns: 0
"c.cc.ccc...c."
Returns: 0
"..cc..c..ccc.c"
Returns: 0
"c..cc..c..c.c.c"
Returns: 0
".cc..c.cc.c.cc.."
Returns: 1
"ccccccc.c...c..cc"
Returns: 0
"c..c.ccccc.cc....."
Returns: 0
"c.c....ccc.c..c.cc."
Returns: 0
"c.c...ccc.c.c...ccc."
Returns: 2
"c...cc....c.c.cccc.c."
Returns: 2
"ccc.ccc.cc..cc.ccc.c.."
Returns: 1
"c...cc...cccc.ccccc.cc."
Returns: 2
"........c....cc..cc.c..c"
Returns: 0
"..ccc.c.c..c.cccc.c...c.c"
Returns: 0
"cc...cc.c.c.c.c.cccc......"
Returns: 2
".c.c....cc.c.cc..c..ccc..c."
Returns: 1
"cccc.c..c.cc.....c.c.....cc."
Returns: 2
"cc.cc.cc....c..cc.c.c.c.cc.c."
Returns: 0
"ccc....c..c..ccc..c.c.c.cc..c."
Returns: 1
"..c..cc...c...c.ccc..c.ccc..ccc"
Returns: 0
".c..cc.c..c..c.c..ccc...ccc..ccc"
Returns: 1
"cc.c.cccc.c.c..cc.c.c....c..cccc."
Returns: 3
"c.....cccc.c..ccc..c.ccc..cc.ccccc"
Returns: 2
"..ccc..cc...c.c.....c.c.c....ccc..c"
Returns: 6
"ccccc....cc..c..ccc.....c..cc...c..c"
Returns: 3
"....c.cccc....ccccc.c.ccc..cccccc.ccc"
Returns: 0
"..c.c.....c.cccc...c.c..c.....cc.cccc."
Returns: 2
".c......ccccc...cc...c.c.cccc.ccccc.c.."
Returns: 2
"c.cc.c.c.c.c.cccccc.c..c.....c..cc.cc.c."
Returns: 0
"c.cc...c..cc......c.cccc..ccc...c.cc..ccc"
Returns: 1
"c..cc.c.c...c...c..c.....c.c.cc.ccc.cccc.."
Returns: 0
".cc.ccccc.cccc.cc..cccc....c...cc..c....ccc"
Returns: 1
"cc....cc..ccc.c...c.ccc.cc.ccc..ccccc.cccc.."
Returns: 1
"c.cccccc.cc.c.ccc.ccccc.cc.cccc.....c.c.cc.cc"
Returns: 1
"c..c...cc.c.c.cc..c..cc.c.c.cc.c.ccc......c..."
Returns: 1
".cccccccc....c....ccc..c.c...c..c..c..ccc.ccc.."
Returns: 0
"ccc...cc.cc.c.cc..c..ccccc.c.c..c.cc..c....c...c"
Returns: 1
"c.c.c...cc..cccc....c.cccc....c.c..ccccc.c.c..ccc"
Returns: 1
".cccc...........ccc.cc.c.c....c...cc.ccc.cc.cccc.c"
Returns: 4
".................................................."
Returns: 49
"cccccccccccccccccccccccccccccccccccccccccccccccccc"
Returns: 1
"..........."
Returns: 10
"..cc.."
Returns: 1
"c.c.c.c"
Returns: 2
"c...c"
Returns: 4
"c.c................."
Returns: 2
"cc.cc"
Returns: 2
"c..c....cc...cccc"
Returns: 4