Problem Statement
We say that a string A is produced by interleaving strings B and C if we can color each character of A either red or blue in such a way that the red characters, in order, produce the string B and the blue characters, in order, produce the string C. For example, each of the strings "dogcat", "catdog", "cadogt" and "cdaotg" can be obtained by interleaving the strings "cat" and "dog".
Interleaving more than two strings is defined in the same way. For example, the string "aaabcbcbc" can be obtained by interleaving three copies of the string "abc".
A string is called good if it can be obtained by interleaving one or more copies of the string "buffalo". For example, the strings "buffalo", "bbuuffaalloo", and "buffalobuffalobuffalo" are good, but "buffaloolaffub" and "bubufffflaaloo" are not good.
A pattern is a string that consists of lowercase letters and question marks ('?'). We say that a string S of lowercase letters matches a pattern P if we can obtain S from P by replacing each '?' by some lowercase letter. Different question marks may be replaced by different letters. For example, the string "abcde" matches the pattern "a?c?e".
You are given a
Definition
- Class:
- BuffaloBuffaloBuffalo
- Method:
- count
- Parameters:
- String
- Returns:
- int
- Method signature:
- int count(String pattern)
- (be sure your method is public)
Constraints
- pattern will contain between 1 and 100 characters, inclusive.
- Each character in pattern will be a lowercase English letter ('a' - 'z') or '?'.
Examples
"buffa????ffalo"
Returns: 6
There are 6 good strings that match the given pattern: "buffalobuffalo" "buffalbouffalo" "buffalbuoffalo" "buffablouffalo" "buffabluoffalo" "buffabuloffalo"
"buffal????????"
Returns: 7
"b??????b??????b??????b??????"
Returns: 1
The only good string is "buffalobuffalobuffalobuffalo".
"???????????????????????????????????"
Returns: 420429295
Don't forget mod.
"x"
Returns: 0
"??????????????????????????????????????????????????????????????????????????????????????????????????"
Returns: 214380133
"?????????????????????????????????????????????????????????????????????????oo???????????????????????"
Returns: 537308020
"???????u??b???????????f??????????????????????????f???????????????????????????"
Returns: 800199380
"bbbbbub?bb?uufubf?bbuu?bffaa?ufffu?falf?lo?oafofuuffa??a?l?llffbfaof??ffooaaooaf???o?lloloffaloolo"
Returns: 9176151
"buffalo"
Returns: 1
"?bb??????????f?????f????????l?a????"
Returns: 981908113
"bbbb?uuf?fff?ua?fu??bfof???l??uoa???uffffbf?a?b?fo??f?al??falol?fol?f??oal?lo"
Returns: 218165483
"bbbubbufuubffffbff?ualaoloufffbaloufuffaalolaalloofofalo"
Returns: 1
"?b??ubfu?f????a??l?????????o??????al??????????f??lo?????"
Returns: 833875213
"????u?f???bu?u????????f?????f??lo??u??a??oa???f???uff??o"
Returns: 377587883
"bbufuf??floalo"
Returns: 2
"?????b???????????????????????????????????????????l???????????f????????????????f??????al????"
Returns: 721593975
"bbu?ufb?????????fa??of??????ba???f?????????l?l????o????a??????o???fal?"
Returns: 670421686
"bbbubffbauuffabulofuffbuflfalfoffaalooloalouffalo"
Returns: 1
"b?????o"
Returns: 1
"??b????f?bb????????a????????o???o????????f?????????a??ff?o?a?of?????o????o???"
Returns: 706995726
"?b?bb?uuufbuff?u???bf?uoaf?l?af?llu?fobbu??f?fa??uflo??fal??b??ouffau?ofalo?al??fa?o"
Returns: 519818004
"???????f??????a?????????f????l???????f????"
Returns: 702798372
"b?b????????f??b??f?????f??a??????l??a???????????????????"
Returns: 663533572
"???b??f???l??o??ffa?o"
Returns: 194
"?????u??f??uo??????af?????aal??oo??f??o?lo"
Returns: 120637892
"???????????b?????????????????????u??????????????l???l??????l????????uff?????????uo???fo???????????"
Returns: 377790151
"bbbuufbbbbuufaffuf?alofbalfbufolfbfaub??ofuufff?aaalolofafubbffalalooolouffalolffaloouffalo"
Returns: 9
"?bbbbuufb?uf?a?blof?fuaafll?ooufafffuall?fof?ffla?lfo?lo"
Returns: 18
"bb??ubuubub?ff?ffauaufffllffa?ol?b??o?olouffffa?a?lofalo"
Returns: 280
"??ffal?"
Returns: 1
"bbu??ff????a??"
Returns: 8
"?????????????????????????????????????????????????????f???????o?????l???????????????????????"
Returns: 772508208
"???????"
Returns: 1
"????????????????????????????a?????????????"
Returns: 794094937
"????falo?uf??uf??lofffa?o???"
Returns: 27
"bbuf?f??o?fa??"
Returns: 1
"buffalo"
Returns: 1
"????ub??f???fu?bf?????????????lo????o?f?l?"
Returns: 826973544
"?b?bubu?f?f?f????l??lo?fb?u?o????fa?o?falo"
Returns: 2305045
"bubfbuffbbbbubuffbuba?ufubfbufaloaloffallff?ofoffffaf?faflalloloufaooloufffaloalaloo"
Returns: 3
"b??u?b?b?u?fuf?u?l??f??bf???buobu?f?b?f??afl?a?uff?lo?lfoaf?lb?ffa??uf?fual??flf?l?ff???l???o?f?lo"
Returns: 61414199
"???????f????f?l?????u???????o?????a???????f?????????f??????f?????ll??o????l????????????????"
Returns: 665548064
"buffa?o"
Returns: 1
"bbbbbuuffffaablolububfuuffaflfouoff?ufaalfolfo??laoalolo"
Returns: 3
"b????ub??uf?u????aalfu?ffbf?fa??f??ofbf?uuf?of?a??l?loafafflolla?l?ooobuff???l?ffa??"
Returns: 571392518
"?????????????????????"
Returns: 831389
"buff?aubbulbfuo??l?fobfbu?alaoflouffauf?fofaloalo"
Returns: 1
"???bu???u?a???ub?lof???b???a??lf??l?u?fo????l???f??oalfao?llo??b??????"
Returns: 963959456
"?ub??buff?uf?baflaobu??uffluf??f?uf??baufl?o??lalfo?flflalobo?falooubuffffal?louoffal?f?al?"
Returns: 12344046
"bbb???bau???u?uff??ffl??ff??obufa??alooalo"
Returns: 5072
"?????????a?ob??buu?????ff???????????????u??????u?a???????????f??l??a??????o?????a???"
Returns: 720312547
"???????????o?????????????????????????a?o????l????"
Returns: 598207029
"bbb?b?u?b?u?bfuu??f?ff??albuffoaf?luffalf?o?offu?fffulbaallf?bo?ffoallfoaal?fufooalfo??alofalo??l?"
Returns: 195153378
"bbbb?ubbuffuuffubffffuauluabolbalauffffoufafffa?llolooolf?aalofolofa??"
Returns: 1
"?????????f????f?f????????????????obl???????????l????????????????????????l?o??"
Returns: 28574571
"?????bu?b???bfff?f?fauflbfu?auf??fllfl??oo?ffffa??aulu?oaa??o??llobufo??l???a?????al?o?f?lo"
Returns: 600978495
"?????ba????b?f?ab?f?????????????f??????????????ou?fl????"
Returns: 674055717
"bbbb?uub?f??f??f?a?fubl?foufaaffla?ol?u?lab?ofo?ofbuufffaa??fa?o?al?lo"
Returns: 1049124
"?????b????u??fb???l??u??fof????o???"
Returns: 31417513
"bbbuuu?b?ufffufau?o?abfblf?loofubff?bbbauu??uuuaff?floffal?f?ofo?alalaoof?lloo??ffa?ooffalo"
Returns: 858
"bbuufbfabbubulofbfbubuubuubfffffuffafalalofloffuobuaffffaffalalfoloalfaoaflolloa?loo"
Returns: 1
"b??????u?????????????????????a???u???????l?????????????????f???"
Returns: 441648747
"???????b??????????????al??u??????l?????o??"
Returns: 444363122
"??b???f????ob?ub?f??b???fubfl?????fa?ll?f??fal???fo?lo??f????ul?uu?f?l?f?ffa?o?f?????lo?al?"
Returns: 607876326
"bubb?bf?u?ffbfufabulfaloffaoluobuffaloa?fofffalf?a?ofal?"
Returns: 3
"b?b?ub?????????????b?????????????l????????f???u???fo????"
Returns: 933602526
"bbubbffufafl?ab?bulbubfbfouffbff?uufabfulua?ofalobullfoffu?al??loffalo?aloffa?offalo"
Returns: 64
"bb?bbbuubbuubufffbfalu?ffuofbualoufffal?u??fffaloa?a?ofaflloaalouoffalfolao?o"
Returns: 8
"?b??????????????????????????"
Returns: 155338326
"?u??????b????ufb????u?o?????????????????o??a??????????????????f??o??????f???o"
Returns: 679930942
"b?b???????au??l???f?f???????"
Returns: 1454040
"b?bbbuufbbufffaaf?foaloflofualfofal?buffualo?falo"
Returns: 1
"b???b?b?f?u???f??u?ufaalloob?lbfbf???l??ufo?floffffffal?a?????f?????lo??l?o??"
Returns: 574382904
"bbbubbbufubuffaubblffffaflauol?f?faauuflof??lofaflol?uffalooalo"
Returns: 12
"???uf?fu???a??b??f?u??u?f??f?fffu?f??af?f??lfu??l?l?ob?o???f?lbu?uloflf?lof??o??a??of??????l???a?o"
Returns: 248711597
"bb?f?b?f?lbuobf?aul?fuu?f?afall?aofolbou??alofa??"
Returns: 34
"bubbubfbbuffalobuuf?ffbfualaaloofubfalflouofbfaflalfobuu?ffafbolalouofalouffaloffalo"
Returns: 1
"???????????????????????????????????"
Returns: 420429295
"b??????f?f??f???????al??a???????f????????????????"
Returns: 118117230
"bbbbuuufffbfaffl?obbba?blbauobff?ffafuulal??ofo?fafalo?ffa?ou?faloal?lo?ffal?"
Returns: 299
"bbb??b?bfu?ub?????a?u?lf?o??f?????l??????fl??a??lo?f?floa?oouf?b?f??a???f???o"
Returns: 527716165
"????ff?l?o?fa?ob???????????al??fal?"
Returns: 33747
"????????ufbbufa??fb??f?fb???llouufuf???o???a??o??aloof?a?o??lo?lof???o"
Returns: 50521634
"??????????????????b?????????????????????o??????a???u???????????"
Returns: 959728046
"bbuu?fa?lobfu?fffaalloo?falo"
Returns: 1
"??????????u????????????????????????"
Returns: 935554933
"b??u??fa??ao?o"
Returns: 4
"b???fbu??bbul???f????f?a?f?l??l???ffb???ol?o??fa??????lo"
Returns: 599471193
"b????b??????f???b??????u?u???a??????fa?oa?of?l?lo??ff???"
Returns: 537034534
"??????u?uf?????f???????u????f????????llaf??b?u????f??????l??l?f?f??????fff????????lo"
Returns: 395166881
"buffalo"
Returns: 1
"?????u?????f?f?l??u???????o?????o??u???????u?????????????????lo?u?fal?"
Returns: 885100260
"b?u??????u??u??u?l??????l???ualo?f???o???alf?fa?o"
Returns: 418673076
"b?ufubuffalof?falaloo"
Returns: 1
"b??uubff?ubffffffabaaufllo??lol?of?a?o?alo"
Returns: 12
"b????f?????f??????a??????fa?l??b???????????ou?f?????????"
Returns: 733939226
"?b???fbu?f?u?ff??aau?l????uba?fa??f?o?al?ofa?oalo??falo?"
Returns: 178158486
"bbbufuf?ufalabfufolfo???uf?o?aalolo"
Returns: 9
"??b???????????????o??"
Returns: 121503
"?????????f??????f???a????a??f??ol?l?????a???f?a?o"
Returns: 631472292
"????????u?f??????????"
Returns: 83258
"????b???????????b???f??????????l??????????????????????????f?????a??????????????????l???????fa?????"
Returns: 994973098
"?buubff?luoffaloffalo"
Returns: 1
"???u????????ba??????b????u????lofu??floffal???o?lo???a??"
Returns: 127530202
"bbufbbfauluofuffaflfofaloalo"
Returns: 1
"??b???ff?ba?lb?bbfou?a???blff????ooo?uu?a?ff??ufuafllof?fa?ouaflfooaa??ffalolouf???o"
Returns: 7986052
"?"
Returns: 0
"??????"
Returns: 0
"????????????????????????????????????????????????????????????????????????????????????????????????????"
Returns: 0
"????????????????????????????????????????????????l?????????????????????????????????????????????o???"
Returns: 533950203
"??????????????????????????????????????????????????????????????????????????????????cc??????????????"
Returns: 0