Statistics

Problem Statement for "TwoStringMasks"

Problem Statement

You are given two Strings s1 and s2. Each string contains some letters and exactly one asterisk ('*').

You must replace each asterisk with a sequence of letters (possibly of zero length). The resulting two strings must be equal.

Return the shortest possible resulting string. If it is impossible to make the strings equal, return "impossible" (quotes for clarity) instead.

Definition

Class:
TwoStringMasks
Method:
shortestCommon
Parameters:
String, String
Returns:
String
Method signature:
String shortestCommon(String s1, String s2)
(be sure your method is public)

Constraints

  • s1 will contain between 1 and 50 characters, inclusive.
  • s2 will contain between 1 and 50 characters, inclusive.
  • s1 and s2 will contain only uppercase letters ('A'-'Z') and asterisks ('*').
  • s1 and s2 will contain exactly one asterisk each.

Examples

  1. "TOPC*DER"

    "T*PCODER"

    Returns: "TOPCODER"

    Each of the asterisks should be replaced with an "O".

  2. "HELLO*"

    "HI*"

    Returns: "impossible"

    No matter how you replace the asterisks, the second characters of the strings will differ. So it is impossible to make the strings equal.

  3. "GOOD*LUCK"

    "*"

    Returns: "GOODLUCK"

    The first asterisk should be replaced with an empty string.

  4. "*SAMPLETEST"

    "THIRDSAMPLE*"

    Returns: "THIRDSAMPLETEST"

  5. "*"

    "*"

    Returns: ""

  6. "*"

    "*RIGHT"

    Returns: "RIGHT"

  7. "*"

    "LEFT*"

    Returns: "LEFT"

  8. "*"

    "BO*TH"

    Returns: "BOTH"

  9. "TOBE*"

    "*"

    Returns: "TOBE"

  10. "*ORNOTTOBE"

    "*"

    Returns: "ORNOTTOBE"

  11. "*"

    "THATIS*THEQUESTION"

    Returns: "THATISTHEQUESTION"

  12. "THISISATESTTHATCHECKSAVERYWEIRDSPECIFIC*SITUTATION"

    "THISIS*ON"

    Returns: "THISISATESTTHATCHECKSAVERYWEIRDSPECIFICSITUTATION"

  13. "DARNLEYWASHERE*HEMADETHISTESTCASEFORTHETOPCODERSRM"

    "DARNLEYWASHERE*FORTHETOPCODERSRM"

    Returns: "DARNLEYWASHEREHEMADETHISTESTCASEFORTHETOPCODERSRM"

  14. "ROTIJWEROITERIWEOIUCROIWRUCPOWQEIJVT*IJRSLKDHFRTIY"

    "ROTIJWEROITERIWEOIUCROIWRUCPOW*IJRSLKDHFRTIY"

    Returns: "ROTIJWEROITERIWEOIUCROIWRUCPOWQEIJVTIJRSLKDHFRTIY"

  15. "THISISALARGEBUTAREALLYEA*SYTOPASSTESTCASEFORTHESRM"

    "THISISALARGEBUTAREALLYEA*SYTOPASSTESTCASEFORTHESRM"

    Returns: "THISISALARGEBUTAREALLYEASYTOPASSTESTCASEFORTHESRM"

  16. "THISISALARGEBUTAREALLYEA*SYSRM"

    "THISISALARGEBUTAREALLYEA*SYTOPASSTESTCASEFORTHESRM"

    Returns: "impossible"

  17. "*SYTOPASSTESTCASEFORTHESRM"

    "THISISALARGEBUTAREALLYEA*SYTOPASSTESTCASEFORTHESRM"

    Returns: "THISISALARGEBUTAREALLYEASYTOPASSTESTCASEFORTHESRM"

  18. "*ODDTESTCASE"

    "ROBINHOOD*"

    Returns: "ROBINHOODDTESTCASE"

  19. "RED*YELLOWGREENBLUEPURPLE"

    "REDORANGEYELLOWGREEN*PURPLE"

    Returns: "REDORANGEYELLOWGREENBLUEPURPLE"

  20. "TEST*ABACABADABACABAEND"

    "TESTABACABAEABACABA*END"

    Returns: "TESTABACABAEABACABADABACABAEND"

  21. "ONETWOTHREEFOURFIVESIXSEVENEIGHTNINETENELEVEN*ELVE"

    "ON*ENELEVENTWELVE"

    Returns: "ONETWOTHREEFOURFIVESIXSEVENEIGHTNINETENELEVENTWELVE"

  22. "*EGORERYXGAWRYYUHCHANDREWZTAKRIJGERTJEVASYLBURUNDU"

    "PETRACRUSHTOMEKBMERRYSNAPDRAGONMAREKCYGANOPENGLEG*"

    Returns: "PETRACRUSHTOMEKBMERRYSNAPDRAGONMAREKCYGANOPENGLEGORERYXGAWRYYUHCHANDREWZTAKRIJGERTJEVASYLBURUNDU"

  23. "PETRACRUSHTOMEKBMERRY*OPENGLEG"

    "PETRACRUSH*MAREKCYGANOPENGLEG"

    Returns: "PETRACRUSHTOMEKBMERRYMAREKCYGANOPENGLEG"

  24. "AAAABBBBAAAABBBBAAAABBBBAAAAAAACCCAAACCCAAACCCAAA*"

    "*AAACCCAAACCCAAACCCAAAAAAAADDDDDAAAAADDDDDAAAAADAA"

    Returns: "AAAABBBBAAAABBBBAAAABBBBAAAAAAACCCAAACCCAAACCCAAAAAAAADDDDDAAAAADDDDDAAAAADAA"

  25. "*ZZZYYYZZZYYYZZZYYYZZZZZZZZYYYYYZZZZZYYYYYZZZZZDZZ"

    "ZZZZYYYYZZZZYYYYZZZZYYYYZZZZZZZYYYZZZYYYZZZYYYZZZ*"

    Returns: "ZZZZYYYYZZZZYYYYZZZZYYYYZZZZZZZYYYZZZYYYZZZYYYZZZZZZZZYYYYYZZZZZYYYYYZZZZZDZZ"

  26. "HOWMUCHWOODWOULDAWOODCHUCKIFAWOODCHUCKWOULDCHUCKW*"

    "*HOWMUCHWOODWOULDAWOODCHUCKIFAWOODCHUCKWOULDCHUCKW"

    Returns: "HOWMUCHWOODWOULDAWOODCHUCKIFAWOODCHUCKWOULDCHUCKW"

  27. "HOWMUCHWOODWOULDAWOODCHUCKIFAWOODCHUCKWOULDCHUCKW*"

    "*NOWMUCHWOODWOULDAWOODCHUCKIFAWOODCHUCKWOULDCHUCKW"

    Returns: "HOWMUCHWOODWOULDAWOODCHUCKIFAWOODCHUCKWOULDCHUCKWNOWMUCHWOODWOULDAWOODCHUCKIFAWOODCHUCKWOULDCHUCKW"

  28. "*LETAMANDRINKTENBARRELSOFRUMADAYHESNOTADRUNKENSKIP"

    "LETAMANDRINKTENBARRELSOFRUMADAYHESNOTADRUNKENSKIP*"

    Returns: "LETAMANDRINKTENBARRELSOFRUMADAYHESNOTADRUNKENSKIP"

  29. "*LETAMANDRINKTENBARRELSOFRUMADAYHESNOTADRUNKENSKIP"

    "SETAMANDRINKTENBARRELSOFRUMADAYHESNOTADRUNKENSKIP*"

    Returns: "SETAMANDRINKTENBARRELSOFRUMADAYHESNOTADRUNKENSKIPLETAMANDRINKTENBARRELSOFRUMADAYHESNOTADRUNKENSKIP"

  30. "GUITARPIANOCELLOSAXOPHONEDRUMSVIOLINFLUTE*TROMBONE"

    "GUITAR*FLUTECELLOVIOLINPIANOSAXOPHONEDRUMSTROMBONE"

    Returns: "GUITARPIANOCELLOSAXOPHONEDRUMSVIOLINFLUTECELLOVIOLINPIANOSAXOPHONEDRUMSTROMBONE"

  31. "HOHOOHOHOHOHOHOHOHOHOOHOHHOOHHOOHOOHOHOHOHOOH*OHOH"

    "HOHO*OHHOHOHOOHOHOOHOOHOHOHOOOOHOOHOHOHHHOHOOHOHOH"

    Returns: "HOHOOHOHOHOHOHOHOHOHOOHOHHOOHHOOHOOHOHOHOHOOHHOHOHOOHOHOOHOOHOHOHOOOOHOOHOHOHHHOHOOHOHOH"

  32. "DO*GOODTHINGS"

    "DOINTERESTING*THINGS"

    Returns: "DOINTERESTINGOODTHINGS"

  33. "FORWHOMTHEBEL*RINGS"

    "FORWHOMTHEBE*LRINGS"

    Returns: "FORWHOMTHEBELRINGS"

  34. "HUMAN*"

    "*MANBEING"

    Returns: "HUMANBEING"

  35. "WELL*"

    "TELL*"

    Returns: "impossible"

  36. "STOP*IT"

    "STOP*BEINGABRAT"

    Returns: "impossible"

  37. "FEEL*LUCKY"

    "FOOLSARELUCKY*"

    Returns: "impossible"

  38. "*TEST"

    "*TESTING"

    Returns: "impossible"

  39. "*TESTTEST"

    "*TEST"

    Returns: "TESTTEST"

  40. "THEREIS*DEMOCRACYINRUSSIA"

    "THEREISNO*"

    Returns: "THEREISNODEMOCRACYINRUSSIA"

  41. "HEY*SUPPER"

    "HEYWHATSUP*"

    Returns: "HEYWHATSUPPER"

  42. "*ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"

    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA*"

    Returns: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"

  43. "*YES"

    "IMFEELINGLUCKY*"

    Returns: "IMFEELINGLUCKYES"

  44. "*TOP"

    "*CODER"

    Returns: "impossible"

  45. "*"

    "A*"

    Returns: "A"

  46. "*A"

    "B*"

    Returns: "BA"

  47. "LASTCASE*"

    "*LASTCASE"

    Returns: "LASTCASE"

  48. "TOPC*DER"

    "*COOOODER"

    Returns: "TOPCOOOODER"

  49. "P*RTY"

    "PKWER*Y"

    Returns: "PKWERTY"

  50. "ABC*ABC"

    "*BC"

    Returns: "ABCABC"

  51. "AA*A"

    "A*A"

    Returns: "AAA"

  52. "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA*A"

    "A*A"

    Returns: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"

  53. "TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTAAA*"

    "*TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"

    Returns: "TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTAAATTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"

  54. "MALA*KAZAM"

    "*LAEASDFKSKAZAM"

    Returns: "MALAEASDFKSKAZAM"

  55. "TOP*CODER"

    "T*PCOCODER"

    Returns: "TOPCOCODER"

  56. "A*"

    "A*"

    Returns: "A"

  57. "*SAMPLETESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTT"

    "ABCDEFGHIJKLMNAMCDEFGEGEDKMEDFDFAEIBTHIRDSAMPLE*T"

    Returns: "ABCDEFGHIJKLMNAMCDEFGEGEDKMEDFDFAEIBTHIRDSAMPLETESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTT"

  58. "HELLO*"

    "H*"

    Returns: "HELLO"

  59. "A*"

    "B*"

    Returns: "impossible"

  60. "*AB"

    "*AB"

    Returns: "AB"

  61. "ADFSD*DFGDFF"

    "ADF*DFF"

    Returns: "ADFSDDFGDFF"

  62. "ABC*BCA"

    "*"

    Returns: "ABCBCA"

  63. "ABCC*F"

    "ABCC*CF"

    Returns: "ABCCCF"

  64. "*TESTTEST"

    "TESTMIN*TEST"

    Returns: "TESTMINTESTTEST"

  65. "AAA*AAA"

    "AAA*AAA"

    Returns: "AAAAAA"

  66. "TOZOOATZOO*"

    "TOZ*O"

    Returns: "TOZOOATZOO"

  67. "GOT*YOU"

    "G*"

    Returns: "GOTYOU"

  68. "A*B"

    "AA*BB"

    Returns: "AABB"

  69. "TOP*CODER"

    "TOPCODECODECO*ER"

    Returns: "TOPCODECODECODER"

  70. "*ABC"

    "CBAB*"

    Returns: "CBABC"

  71. "ABCD*"

    "*BCD"

    Returns: "ABCD"

  72. "ABCDB*XY"

    "ABC*AXY"

    Returns: "ABCDBAXY"

  73. "TOPOOO*OOOP"

    "TOP*OOOP"

    Returns: "TOPOOOOOOP"

  74. "AB*ASD"

    "AB*"

    Returns: "ABASD"

  75. "A*A"

    "AB*BA"

    Returns: "ABBA"

  76. "ANK*VIJAY"

    "ANKPSQVIJP*AY"

    Returns: "ANKPSQVIJPVIJAY"

  77. "AAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA*A"

    "A*AAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"

    Returns: "AAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"

  78. "A*B"

    "AC*DB"

    Returns: "ACDB"

  79. "T*R"

    "TOP*DER"

    Returns: "TOPDER"

  80. "*ABAC"

    "ACAB*"

    Returns: "ACABAC"

  81. "A*A"

    "*"

    Returns: "AA"

  82. "LOLV*"

    "*LOL"

    Returns: "LOLVLOL"

  83. "ABC*"

    "A*"

    Returns: "ABC"

  84. "C*COCA"

    "C*OCA"

    Returns: "CCOCA"

  85. "LEVSKISKI*KISKIKIALEVSKIIA"

    "LEVSKISKISKISKIALEV*A"

    Returns: "LEVSKISKISKISKIALEVKISKIKIALEVSKIIA"

  86. "DABC*DEF"

    "ABC*DEF"

    Returns: "impossible"

  87. "ABA*BA"

    "A*ABA"

    Returns: "ABABA"

  88. "A*B"

    "C*D"

    Returns: "impossible"

  89. "*AAAAAAAAAX"

    "AAAAAAAAAAAAAAAAAAAAAAAA*X"

    Returns: "AAAAAAAAAAAAAAAAAAAAAAAAX"

  90. "ABCDE*FGH"

    "ABC*XXXAFGH"

    Returns: "ABCDEXXXAFGH"

  91. "*A"

    "*AAAAAA"

    Returns: "AAAAAA"

  92. "ASDFASDFAS*ADFASDFAS"

    "A*"

    Returns: "ASDFASDFASADFASDFAS"

  93. "TOPOP*CODER"

    "TOP*COCODER"

    Returns: "TOPOPCOCODER"

  94. "A*B"

    "AB*AB"

    Returns: "ABAB"

  95. "TH*SASATESTTEST"

    "THTHIRDSASA*TEST"

    Returns: "THTHIRDSASATESTTEST"

  96. "*AB"

    "*A"

    Returns: "impossible"

  97. "ASDFAAAAAAAAAAAAAAAA*BBBBBBBBBB"

    "*ABBBBBBBBBBBBB"

    Returns: "ASDFAAAAAAAAAAAAAAAABBBBBBBBBBBBB"

  98. "ACBC*DE"

    "ACBC*CDE"

    Returns: "ACBCCDE"

  99. "*ABC"

    "*XABC"

    Returns: "XABC"

  100. "ABCXYZ*XYZABC"

    "ABC*ABC"

    Returns: "ABCXYZXYZABC"

  101. "AAAA*AAAA"

    "A*A"

    Returns: "AAAAAAAA"

  102. "N*WMBQEIPF"

    "*WMBQEIPF"

    Returns: "NWMBQEIPF"

  103. "ABCDEFGH*"

    "A*"

    Returns: "ABCDEFGH"

  104. "ERYXAWASATHERE*ATODAY"

    "ERYXAWAS*AHEREATODAY"

    Returns: "ERYXAWASATHEREAHEREATODAY"

  105. "ABC*ABCD"

    "ABC*CD"

    Returns: "ABCABCD"

  106. "*TOP"

    "*TOP"

    Returns: "TOP"

  107. "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA*"

    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA*"

    Returns: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"

  108. "AAAAA*AAAAA"

    "AA*AA"

    Returns: "AAAAAAAAAA"

  109. "ABCC*CC"

    "*BCCC"

    Returns: "ABCCBCCC"

  110. "A*AA"

    "A*AAAAAAAAAA"

    Returns: "AAAAAAAAAAA"

  111. "*AAA"

    "MISIOAA*A"

    Returns: "MISIOAAA"

  112. "*A"

    "AB*"

    Returns: "ABA"

  113. "ABCDEF*ABC"

    "ABCDEFA*"

    Returns: "ABCDEFABC"

  114. "ABB*B"

    "A*BB"

    Returns: "ABBB"

  115. "AAAA*AAAAAAAA"

    "AAA*AAAAAAAAA"

    Returns: "AAAAAAAAAAAA"

  116. "*"

    "DDFRYUSRRBNI*I"

    Returns: "DDFRYUSRRBNII"

  117. "*H"

    "H*"

    Returns: "H"

  118. "A*AAA"

    "*AAA"

    Returns: "AAAA"

  119. "*AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"

    "A*"

    Returns: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"

  120. "HHK*"

    "*H"

    Returns: "HHKH"

  121. "*ABCDEF"

    "DEF*"

    Returns: "DEFABCDEF"

  122. "AAAA*AAAA"

    "*"

    Returns: "AAAAAAAA"

  123. "ABORT*"

    "*BED"

    Returns: "ABORTBED"

  124. "*APQ"

    "PQA*"

    Returns: "PQAPQ"

  125. "*"

    "ABCD*EFGH"

    Returns: "ABCDEFGH"

  126. "TOPCO*LAMBDA"

    "TO*BDA"

    Returns: "TOPCOLAMBDA"

  127. "TCOCO*COCO"

    "*CO"

    Returns: "TCOCOCOCO"

  128. "A*X"

    "AB*CX"

    Returns: "ABCX"

  129. "ABC*D"

    "AB*DCF"

    Returns: "impossible"

  130. "C*XAXC"

    "CXXX*C"

    Returns: "CXXXAXC"

  131. "A*A"

    "A*A"

    Returns: "AA"

  132. "*TOP"

    "*TOPPP"

    Returns: "impossible"

  133. "ABC*C"

    "A*ABC"

    Returns: "ABCABC"

  134. "AB*CD"

    "ABAA*AACD"

    Returns: "ABAAAACD"

  135. "EZ*DA"

    "EZDUN*VODA"

    Returns: "EZDUNVODA"


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: