Statistics

Problem Statement for "Softmatch"

Problem Statement

Hero has a collection of (not necessarily distinct) strings. You are given this collection in the String[] patterns. Each character in each string is one of '0', '1', '2', and '3'. Hero also has a string of wildcard characters. You are given it as the String S. Each character of S is either 'a' or 'b'. You are allowed to modify S by changing some (possibly none or all) characters to their uppercase versions: that is 'a' to 'A' and 'b' to 'B'. The meaning of the wildcard characters in S is as follows:
  • 'a' matches small digits: '0' and '1'
  • 'A' matches big digits: '2' and '3'
  • 'b' matches even digits: '0' and '2'
  • 'B' matches odd digits: '1' and '3'
We say that S contains an occurrence of the pattern p at position j if for each valid i the wildcard character S[j+i] exists and matches the digit patterns[p][i]. As we already mentioned above, you are allowed to modify S by changing some of its letters to uppercase. Your goal is to maximize the total number of occurrences of the given patterns in your modified S. In other words, you want to maximize the number of pairs (p,j) such that your modified S contains an occurrence of the pattern p at position j. Compute and return the largest possible total number of occurrences of the given patterns in the modified string of wildcards.

Definition

Class:
Softmatch
Method:
count
Parameters:
String, String[]
Returns:
int
Method signature:
int count(String S, String[] patterns)
(be sure your method is public)

Constraints

  • S will contain between 1 and 50 characters, inclusive.
  • Each character in S will be either 'a' or 'b'.
  • patterns will contain between 1 and 5 elements, inclusive.
  • Each element in patterns will contain between 1 and 50 characters, inclusive.
  • Each character in patterns will be between '0' and '3', inclusive.
  • Each element in patterns will be at most as long as S.

Examples

  1. "aaa"

    {"03","21"}

    Returns: 2

    There are two optimal solutions: You may change S to "AaA". This string contains an occurrence of pattern 1 at position 0 and an occurrence of pattern 0 at position 1. You may change S to "aAa". This string contains an occurrence of pattern 0 at position 0 and an occurrence of pattern 1 at position 1. In either case, the total number of occurrences of a pattern is 2.

  2. "aba"

    {"03","11"}

    Returns: 3

    The string "aBa" contains three occurrences of the given patterns: pattern 0 occurs at position 0, and pattern 1 occurs both at position 0 and at position 1.

  3. "bba"

    {"00","00"}

    Returns: 4

    Even if two patterns are equal, we count the occurrences of each of them separately.

  4. "bbbbbb"

    {"1110","011","100"}

    Returns: 3

  5. "abbaa"

    {"123"}

    Returns: 2

  6. "aababbaab"

    {"012","332","101", "0313"}

    Returns: 7

  7. "ababbbbabbabbbbabbaabbbaaabbabbbabbbbaaaab"

    {"3103021","3311","0322020","0021212","2110130"}

    Returns: 22

  8. "bbaab"

    {"31","221","13","202","212"}

    Returns: 6

  9. "bbbbbbabbbbbbbbbbbbbab"

    {"33113"}

    Returns: 15

  10. "aaba"

    {"222","00","232","010"}

    Returns: 4

  11. "abbabababbbbbabbaaabababbbaaaaaaaa"

    {"013023"}

    Returns: 6

  12. "ababbbaabaabababbbbbbabba"

    {"232123","003220","022231","200122"}

    Returns: 9

  13. "aa"

    {"30","2","11"}

    Returns: 2

  14. "aaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaabaaaaa"

    {"3102102","2210323","3110001","0122210","2113212"}

    Returns: 13

  15. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaab"

    {"3030113","1113022","0030122"}

    Returns: 9

  16. "abbbbbbbbaaabbbabbbbb"

    {"03003","22","23033","01221","12"}

    Returns: 22

  17. "aaaababbbbabbaabaababbabab"

    {"3","101221","102330","010131"}

    Returns: 26

  18. "bbabaabbbbabbaababbbbbbaaaabbbabbbbbbbbbbbbbbbbbab"

    {"30323223","33112221"}

    Returns: 9

  19. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

    {"02330101","1300"}

    Returns: 16

  20. "babaaaababababaabbbaabbbbbbaaaabababbabaaabaaaaa"

    {"3223"}

    Returns: 23

  21. "aabaaabaaabbaaaaaaaaaababaaaaaaaaaa"

    {"303113","102001","202213","003033"}

    Returns: 12

  22. "baababbbbbaaaababbbabbbabbb"

    {"211012","31100","220002"}

    Returns: 10

  23. "bbbbabbbbbbbbbbabbbababbbbaababbb"

    {"103031"}

    Returns: 7

  24. "aaa"

    {"2","31","30","33","1"}

    Returns: 6

  25. "abbaa"

    {"1","013","311"}

    Returns: 8

  26. "bbbbbbbbbbbbbbbbbbbb"

    {"22101"}

    Returns: 4

  27. "aaabaaaaaaaaaaaaabaaaaababaaaaaaa"

    {"120022","100212","0132","011233","022331"}

    Returns: 15

  28. "aabbbbbbbbabb"

    {"2322","3013","3223"}

    Returns: 7

  29. "aaaaaaaaaaaabaaaabaaaaaaaaababaaaaaaaaaaaaaaaaaab"

    {"20123331","30221012"}

    Returns: 7

  30. "baabaaaaaabb"

    {"0313","1013"}

    Returns: 5

  31. "bbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbabbbbbbbbbbbbbbbbb"

    {"02023020","23111322"}

    Returns: 9

  32. "aaaaaaaaaaaaaabaaaaaaabbaaaaabaaabaabaaaabab"

    {"2113210"}

    Returns: 9

  33. "aaaaabaaaaaaaaaaaaa"

    {"210","11131","20021","11220"}

    Returns: 11

  34. "babbbbbabbbbbbbbabbbbabbbbaabbbbbbabbbbbabbbbbbbbb"

    {"00102323"}

    Returns: 7

  35. "aaaabaaaaaaabaaaabaaaaaaabaabbaaaaaabb"

    {"2010302"}

    Returns: 6

  36. "aaabbaaaaaaababaabaaaabaaaaaaaaaaaabaaaaa"

    {"3300012","2003030"}

    Returns: 8

  37. "bbbaabbbbabaabbabbbbbbaabbbbbbb"

    {"003120"}

    Returns: 6

  38. "aaabaa"

    {"102","102","331"}

    Returns: 5

  39. "aababbbbbbbbabbbbaaaabbbaaababaabbabaaababaaaaaabb"

    {"22302011","31323120","01133023","23221233","10302221"}

    Returns: 12

  40. "babbabbaabbb"

    {"1011"}

    Returns: 4

  41. "abaaaabaaaaba"

    {"2320","0210","01","13"}

    Returns: 13

  42. "aababbbbbaabaababaababaaaba"

    {"01113","1","02"}

    Returns: 35

  43. "aabbbbbbbbbbaabbbbabbaabbbabbbbbbaabbabbaaabbbbabb"

    {"30031303","2010321","00120000","10221103","03321010"}

    Returns: 13

  44. "aabbbbbaaababaab"

    {"31330"}

    Returns: 3

  45. "bbbbbbbbbbbbbbbbbbbbbabbbbbbbb"

    {"231123"}

    Returns: 7

  46. "baaabbababbbaaaaaaaaaababaaaaaaaaabaaabb"

    {"1311","1231203"}

    Returns: 17

  47. "aaaaaaaaaaaaaaaa"

    {"12132","23110","12331","20"}

    Returns: 10

  48. "aabaaaaab"

    {"3100"}

    Returns: 2

  49. "aaaaaaaaababaabaaaaabaabaaaaba"

    {"132311","131033","023331"}

    Returns: 10

  50. "bbbbbbbbbbbaaabbbbbaaabbbbabbbbabbabbbbbabbb"

    {"2332133","3032023","1323303"}

    Returns: 12

  51. "aaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabaaaab"

    {"22113","1010211","0232121","2120012","3012333"}

    Returns: 14

  52. "aaaaaaaaaaaaaaaaaaaa"

    {"02331"}

    Returns: 4

  53. "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"

    {"033011","221231","231332"}

    Returns: 10

  54. "bbbbbbbbabbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbb"

    {"00213121","31010111","2320"}

    Returns: 16

  55. "aaaaaaabaabaaaaaaaaabaaaaaab"

    {"123223","032322","211302"}

    Returns: 8

  56. "bababbbbbbbabbb"

    {"2310"}

    Returns: 5

  57. "ababbbbabbabbbbabbaabbbaaabbabbbabbbbaaaab"

    {"1030211","1120322","0200212","2211013","0020300"}

    Returns: 13

  58. "bbabbbbabbabbabbabbbbbbbbabbbbbbbbbbbbbb"

    {"31131311121022221003232301033122","2001030"}

    Returns: 7

  59. "bbababababbbaaaaaaaabbababbaaababab"

    {"3230"}

    Returns: 13

  60. "b"

    {"1","1"}

    Returns: 2

  61. "babbbbbabbaaabbabbbbabb"

    {"22313","13002311011332121","11001","10100","21101"}

    Returns: 12

  62. "aabbbaaabab"

    {"2102"}

    Returns: 3

  63. "abbbba"

    {"000"}

    Returns: 4

  64. "ababbabaabaabbabbaaaaaaabababababbaabaaaabbbab"

    {"123001201323313030113011130222003012","3130031","2303102"}

    Returns: 12

  65. "abbabaaaa"

    {"2212"}

    Returns: 2

  66. "bbbabbbbbbaabbaa"

    {"11310","02233","10200"}

    Returns: 6

  67. "baaabbbababaabbabaabaababbaaaaabbaabbaabababbbbaaa"

    {"13111300","202201","33333303"}

    Returns: 11

  68. "baabbaabaaabbbbabaaabbbabbbaaabbabababb"

    {"0130221","3130012","11230023301013130","013311012113310010320303222330313232310"}

    Returns: 8

  69. "abaabbabbabbbbb"

    {"3102","2311"}

    Returns: 7

  70. "baabaaabbbbbaaaaabababbbbaabbbbbababbbbbbbaab"

    {"3212110","120322313110030231200022110120","001220"}

    Returns: 11

  71. "bba"

    {"3","2"}

    Returns: 4

  72. "b"

    {"2","2","0","1"}

    Returns: 3

  73. "aaaaaaaaaaaababaaaaaaaaaaaaaababbabbaaaaaaaaabaaaa"

    {"133323002212020","13322101","11012330","03123131"}

    Returns: 9

  74. "bbbbabbbabbbbbaabaabbbbbbbababaaababbbababaaaa"

    {"2","0021002"}

    Returns: 46

  75. "baaaabaabbbbaaabbbbbbabaabaaabaabababbbabaabbb"

    {"1030211","0003233"}

    Returns: 8

  76. "baaabbabbaabaaababbbbaabaaaaaaaaabbaabbaaaa"

    {"0200110","2020010","31131110231021210311100230222232023302023","1231113","2100"}

    Returns: 21

  77. "bbababbbabbbbababbbbbbbbbbbbbbbbbbbabbbb"

    {"3210030303","1033010","1311203","211131120021211220123133313222223","3210322"}

    Returns: 11

  78. "bbaabbbbbba"

    {"03213","2210","0010","23"}

    Returns: 9

  79. "aaaabaaaaaaabaaaabaaaaaaabaabbaaaaaabb"

    {"1030201"}

    Returns: 7

  80. "abbabbbbbbbababbbbbabbbabbababababba"

    {"23300","2"}

    Returns: 36

  81. "aaabaabaaaaaaa"

    {"3211","22321"}

    Returns: 4

  82. "b"

    {"1"}

    Returns: 1

  83. "babaaababbaaabaabaaabbbaabbaaaaaaabaaabbbbaaaabbba"

    {"312111223003222133131","30203122"}

    Returns: 8

  84. "abbbbabbbbbababbabbaabbbbbbbabbbbbbba"

    {"1333011","2211332","0110013","0010132122023201021010121320020122312"}

    Returns: 11

  85. "bbbbbbbbbbbabbbbbbbbbbbababbbabbbbbbbbbbbbbbabbbba"

    {"10102031","3103030031333103120","313030201032120012000021022","03003321","03011003"}

    Returns: 10

  86. "aaababaabbabb"

    {"3313"}

    Returns: 5

  87. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

    {"0","0","0","0","0"}

    Returns: 250

  88. "aaaaababaabbbabbabaabbbabbaaabababbbaaabbabaababab"

    {"00012121", "331112001", "23101", "003212", "0012123112312" }

    Returns: 18

  89. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

    {"012301230123012301230123012300", "000000", "111111111111", "3333333333333333333333333333", "2222" }

    Returns: 84

  90. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

    {"02" }

    Returns: 25

  91. "aaaaaaaa"

    {"20000000" }

    Returns: 1

  92. "aaaaaaaa"

    {"22222222" }

    Returns: 1

  93. "aababaababbaababbaabaaaababbaabbbaabaababbaab"

    {"0123210123", "03131212", "1012", "03", "111" }

    Returns: 57

  94. "aaaaaaaaaaa"

    {"113131113" }

    Returns: 1


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: