Problem Statement
You are given two
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
"TOPC*DER"
"T*PCODER"
Returns: "TOPCODER"
Each of the asterisks should be replaced with an "O".
"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.
"GOOD*LUCK"
"*"
Returns: "GOODLUCK"
The first asterisk should be replaced with an empty string.
"*SAMPLETEST"
"THIRDSAMPLE*"
Returns: "THIRDSAMPLETEST"
"*"
"*"
Returns: ""
"*"
"*RIGHT"
Returns: "RIGHT"
"*"
"LEFT*"
Returns: "LEFT"
"*"
"BO*TH"
Returns: "BOTH"
"TOBE*"
"*"
Returns: "TOBE"
"*ORNOTTOBE"
"*"
Returns: "ORNOTTOBE"
"*"
"THATIS*THEQUESTION"
Returns: "THATISTHEQUESTION"
"THISISATESTTHATCHECKSAVERYWEIRDSPECIFIC*SITUTATION"
"THISIS*ON"
Returns: "THISISATESTTHATCHECKSAVERYWEIRDSPECIFICSITUTATION"
"DARNLEYWASHERE*HEMADETHISTESTCASEFORTHETOPCODERSRM"
"DARNLEYWASHERE*FORTHETOPCODERSRM"
Returns: "DARNLEYWASHEREHEMADETHISTESTCASEFORTHETOPCODERSRM"
"ROTIJWEROITERIWEOIUCROIWRUCPOWQEIJVT*IJRSLKDHFRTIY"
"ROTIJWEROITERIWEOIUCROIWRUCPOW*IJRSLKDHFRTIY"
Returns: "ROTIJWEROITERIWEOIUCROIWRUCPOWQEIJVTIJRSLKDHFRTIY"
"THISISALARGEBUTAREALLYEA*SYTOPASSTESTCASEFORTHESRM"
"THISISALARGEBUTAREALLYEA*SYTOPASSTESTCASEFORTHESRM"
Returns: "THISISALARGEBUTAREALLYEASYTOPASSTESTCASEFORTHESRM"
"THISISALARGEBUTAREALLYEA*SYSRM"
"THISISALARGEBUTAREALLYEA*SYTOPASSTESTCASEFORTHESRM"
Returns: "impossible"
"*SYTOPASSTESTCASEFORTHESRM"
"THISISALARGEBUTAREALLYEA*SYTOPASSTESTCASEFORTHESRM"
Returns: "THISISALARGEBUTAREALLYEASYTOPASSTESTCASEFORTHESRM"
"*ODDTESTCASE"
"ROBINHOOD*"
Returns: "ROBINHOODDTESTCASE"
"RED*YELLOWGREENBLUEPURPLE"
"REDORANGEYELLOWGREEN*PURPLE"
Returns: "REDORANGEYELLOWGREENBLUEPURPLE"
"TEST*ABACABADABACABAEND"
"TESTABACABAEABACABA*END"
Returns: "TESTABACABAEABACABADABACABAEND"
"ONETWOTHREEFOURFIVESIXSEVENEIGHTNINETENELEVEN*ELVE"
"ON*ENELEVENTWELVE"
Returns: "ONETWOTHREEFOURFIVESIXSEVENEIGHTNINETENELEVENTWELVE"
"*EGORERYXGAWRYYUHCHANDREWZTAKRIJGERTJEVASYLBURUNDU"
"PETRACRUSHTOMEKBMERRYSNAPDRAGONMAREKCYGANOPENGLEG*"
Returns: "PETRACRUSHTOMEKBMERRYSNAPDRAGONMAREKCYGANOPENGLEGORERYXGAWRYYUHCHANDREWZTAKRIJGERTJEVASYLBURUNDU"
"PETRACRUSHTOMEKBMERRY*OPENGLEG"
"PETRACRUSH*MAREKCYGANOPENGLEG"
Returns: "PETRACRUSHTOMEKBMERRYMAREKCYGANOPENGLEG"
"AAAABBBBAAAABBBBAAAABBBBAAAAAAACCCAAACCCAAACCCAAA*"
"*AAACCCAAACCCAAACCCAAAAAAAADDDDDAAAAADDDDDAAAAADAA"
Returns: "AAAABBBBAAAABBBBAAAABBBBAAAAAAACCCAAACCCAAACCCAAAAAAAADDDDDAAAAADDDDDAAAAADAA"
"*ZZZYYYZZZYYYZZZYYYZZZZZZZZYYYYYZZZZZYYYYYZZZZZDZZ"
"ZZZZYYYYZZZZYYYYZZZZYYYYZZZZZZZYYYZZZYYYZZZYYYZZZ*"
Returns: "ZZZZYYYYZZZZYYYYZZZZYYYYZZZZZZZYYYZZZYYYZZZYYYZZZZZZZZYYYYYZZZZZYYYYYZZZZZDZZ"
"HOWMUCHWOODWOULDAWOODCHUCKIFAWOODCHUCKWOULDCHUCKW*"
"*HOWMUCHWOODWOULDAWOODCHUCKIFAWOODCHUCKWOULDCHUCKW"
Returns: "HOWMUCHWOODWOULDAWOODCHUCKIFAWOODCHUCKWOULDCHUCKW"
"HOWMUCHWOODWOULDAWOODCHUCKIFAWOODCHUCKWOULDCHUCKW*"
"*NOWMUCHWOODWOULDAWOODCHUCKIFAWOODCHUCKWOULDCHUCKW"
Returns: "HOWMUCHWOODWOULDAWOODCHUCKIFAWOODCHUCKWOULDCHUCKWNOWMUCHWOODWOULDAWOODCHUCKIFAWOODCHUCKWOULDCHUCKW"
"*LETAMANDRINKTENBARRELSOFRUMADAYHESNOTADRUNKENSKIP"
"LETAMANDRINKTENBARRELSOFRUMADAYHESNOTADRUNKENSKIP*"
Returns: "LETAMANDRINKTENBARRELSOFRUMADAYHESNOTADRUNKENSKIP"
"*LETAMANDRINKTENBARRELSOFRUMADAYHESNOTADRUNKENSKIP"
"SETAMANDRINKTENBARRELSOFRUMADAYHESNOTADRUNKENSKIP*"
Returns: "SETAMANDRINKTENBARRELSOFRUMADAYHESNOTADRUNKENSKIPLETAMANDRINKTENBARRELSOFRUMADAYHESNOTADRUNKENSKIP"
"GUITARPIANOCELLOSAXOPHONEDRUMSVIOLINFLUTE*TROMBONE"
"GUITAR*FLUTECELLOVIOLINPIANOSAXOPHONEDRUMSTROMBONE"
Returns: "GUITARPIANOCELLOSAXOPHONEDRUMSVIOLINFLUTECELLOVIOLINPIANOSAXOPHONEDRUMSTROMBONE"
"HOHOOHOHOHOHOHOHOHOHOOHOHHOOHHOOHOOHOHOHOHOOH*OHOH"
"HOHO*OHHOHOHOOHOHOOHOOHOHOHOOOOHOOHOHOHHHOHOOHOHOH"
Returns: "HOHOOHOHOHOHOHOHOHOHOOHOHHOOHHOOHOOHOHOHOHOOHHOHOHOOHOHOOHOOHOHOHOOOOHOOHOHOHHHOHOOHOHOH"
"DO*GOODTHINGS"
"DOINTERESTING*THINGS"
Returns: "DOINTERESTINGOODTHINGS"
"FORWHOMTHEBEL*RINGS"
"FORWHOMTHEBE*LRINGS"
Returns: "FORWHOMTHEBELRINGS"
"HUMAN*"
"*MANBEING"
Returns: "HUMANBEING"
"WELL*"
"TELL*"
Returns: "impossible"
"STOP*IT"
"STOP*BEINGABRAT"
Returns: "impossible"
"FEEL*LUCKY"
"FOOLSARELUCKY*"
Returns: "impossible"
"*TEST"
"*TESTING"
Returns: "impossible"
"*TESTTEST"
"*TEST"
Returns: "TESTTEST"
"THEREIS*DEMOCRACYINRUSSIA"
"THEREISNO*"
Returns: "THEREISNODEMOCRACYINRUSSIA"
"HEY*SUPPER"
"HEYWHATSUP*"
Returns: "HEYWHATSUPPER"
"*ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA*"
Returns: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"
"*YES"
"IMFEELINGLUCKY*"
Returns: "IMFEELINGLUCKYES"
"*TOP"
"*CODER"
Returns: "impossible"
"*"
"A*"
Returns: "A"
"*A"
"B*"
Returns: "BA"
"LASTCASE*"
"*LASTCASE"
Returns: "LASTCASE"
"TOPC*DER"
"*COOOODER"
Returns: "TOPCOOOODER"
"P*RTY"
"PKWER*Y"
Returns: "PKWERTY"
"ABC*ABC"
"*BC"
Returns: "ABCABC"
"AA*A"
"A*A"
Returns: "AAA"
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA*A"
"A*A"
Returns: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTAAA*"
"*TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
Returns: "TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTAAATTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
"MALA*KAZAM"
"*LAEASDFKSKAZAM"
Returns: "MALAEASDFKSKAZAM"
"TOP*CODER"
"T*PCOCODER"
Returns: "TOPCOCODER"
"A*"
"A*"
Returns: "A"
"*SAMPLETESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTT"
"ABCDEFGHIJKLMNAMCDEFGEGEDKMEDFDFAEIBTHIRDSAMPLE*T"
Returns: "ABCDEFGHIJKLMNAMCDEFGEGEDKMEDFDFAEIBTHIRDSAMPLETESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTT"
"HELLO*"
"H*"
Returns: "HELLO"
"A*"
"B*"
Returns: "impossible"
"*AB"
"*AB"
Returns: "AB"
"ADFSD*DFGDFF"
"ADF*DFF"
Returns: "ADFSDDFGDFF"
"ABC*BCA"
"*"
Returns: "ABCBCA"
"ABCC*F"
"ABCC*CF"
Returns: "ABCCCF"
"*TESTTEST"
"TESTMIN*TEST"
Returns: "TESTMINTESTTEST"
"AAA*AAA"
"AAA*AAA"
Returns: "AAAAAA"
"TOZOOATZOO*"
"TOZ*O"
Returns: "TOZOOATZOO"
"GOT*YOU"
"G*"
Returns: "GOTYOU"
"A*B"
"AA*BB"
Returns: "AABB"
"TOP*CODER"
"TOPCODECODECO*ER"
Returns: "TOPCODECODECODER"
"*ABC"
"CBAB*"
Returns: "CBABC"
"ABCD*"
"*BCD"
Returns: "ABCD"
"ABCDB*XY"
"ABC*AXY"
Returns: "ABCDBAXY"
"TOPOOO*OOOP"
"TOP*OOOP"
Returns: "TOPOOOOOOP"
"AB*ASD"
"AB*"
Returns: "ABASD"
"A*A"
"AB*BA"
Returns: "ABBA"
"ANK*VIJAY"
"ANKPSQVIJP*AY"
Returns: "ANKPSQVIJPVIJAY"
"AAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA*A"
"A*AAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: "AAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
"A*B"
"AC*DB"
Returns: "ACDB"
"T*R"
"TOP*DER"
Returns: "TOPDER"
"*ABAC"
"ACAB*"
Returns: "ACABAC"
"A*A"
"*"
Returns: "AA"
"LOLV*"
"*LOL"
Returns: "LOLVLOL"
"ABC*"
"A*"
Returns: "ABC"
"C*COCA"
"C*OCA"
Returns: "CCOCA"
"LEVSKISKI*KISKIKIALEVSKIIA"
"LEVSKISKISKISKIALEV*A"
Returns: "LEVSKISKISKISKIALEVKISKIKIALEVSKIIA"
"DABC*DEF"
"ABC*DEF"
Returns: "impossible"
"ABA*BA"
"A*ABA"
Returns: "ABABA"
"A*B"
"C*D"
Returns: "impossible"
"*AAAAAAAAAX"
"AAAAAAAAAAAAAAAAAAAAAAAA*X"
Returns: "AAAAAAAAAAAAAAAAAAAAAAAAX"
"ABCDE*FGH"
"ABC*XXXAFGH"
Returns: "ABCDEXXXAFGH"
"*A"
"*AAAAAA"
Returns: "AAAAAA"
"ASDFASDFAS*ADFASDFAS"
"A*"
Returns: "ASDFASDFASADFASDFAS"
"TOPOP*CODER"
"TOP*COCODER"
Returns: "TOPOPCOCODER"
"A*B"
"AB*AB"
Returns: "ABAB"
"TH*SASATESTTEST"
"THTHIRDSASA*TEST"
Returns: "THTHIRDSASATESTTEST"
"*AB"
"*A"
Returns: "impossible"
"ASDFAAAAAAAAAAAAAAAA*BBBBBBBBBB"
"*ABBBBBBBBBBBBB"
Returns: "ASDFAAAAAAAAAAAAAAAABBBBBBBBBBBBB"
"ACBC*DE"
"ACBC*CDE"
Returns: "ACBCCDE"
"*ABC"
"*XABC"
Returns: "XABC"
"ABCXYZ*XYZABC"
"ABC*ABC"
Returns: "ABCXYZXYZABC"
"AAAA*AAAA"
"A*A"
Returns: "AAAAAAAA"
"N*WMBQEIPF"
"*WMBQEIPF"
Returns: "NWMBQEIPF"
"ABCDEFGH*"
"A*"
Returns: "ABCDEFGH"
"ERYXAWASATHERE*ATODAY"
"ERYXAWAS*AHEREATODAY"
Returns: "ERYXAWASATHEREAHEREATODAY"
"ABC*ABCD"
"ABC*CD"
Returns: "ABCABCD"
"*TOP"
"*TOP"
Returns: "TOP"
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA*"
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA*"
Returns: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
"AAAAA*AAAAA"
"AA*AA"
Returns: "AAAAAAAAAA"
"ABCC*CC"
"*BCCC"
Returns: "ABCCBCCC"
"A*AA"
"A*AAAAAAAAAA"
Returns: "AAAAAAAAAAA"
"*AAA"
"MISIOAA*A"
Returns: "MISIOAAA"
"*A"
"AB*"
Returns: "ABA"
"ABCDEF*ABC"
"ABCDEFA*"
Returns: "ABCDEFABC"
"ABB*B"
"A*BB"
Returns: "ABBB"
"AAAA*AAAAAAAA"
"AAA*AAAAAAAAA"
Returns: "AAAAAAAAAAAA"
"*"
"DDFRYUSRRBNI*I"
Returns: "DDFRYUSRRBNII"
"*H"
"H*"
Returns: "H"
"A*AAA"
"*AAA"
Returns: "AAAA"
"*AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
"A*"
Returns: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
"HHK*"
"*H"
Returns: "HHKH"
"*ABCDEF"
"DEF*"
Returns: "DEFABCDEF"
"AAAA*AAAA"
"*"
Returns: "AAAAAAAA"
"ABORT*"
"*BED"
Returns: "ABORTBED"
"*APQ"
"PQA*"
Returns: "PQAPQ"
"*"
"ABCD*EFGH"
Returns: "ABCDEFGH"
"TOPCO*LAMBDA"
"TO*BDA"
Returns: "TOPCOLAMBDA"
"TCOCO*COCO"
"*CO"
Returns: "TCOCOCOCO"
"A*X"
"AB*CX"
Returns: "ABCX"
"ABC*D"
"AB*DCF"
Returns: "impossible"
"C*XAXC"
"CXXX*C"
Returns: "CXXXAXC"
"A*A"
"A*A"
Returns: "AA"
"*TOP"
"*TOPPP"
Returns: "impossible"
"ABC*C"
"A*ABC"
Returns: "ABCABC"
"AB*CD"
"ABAA*AACD"
Returns: "ABAAAACD"
"EZ*DA"
"EZDUN*VODA"
Returns: "EZDUNVODA"