Problem Statement
You are given a
For example, given the string "5+?=?4" you should return "5+9=14".
If multiple solutions exist, return the one with the maximum possible C. If more than one such solution exists, return the one among them that maximizes the value of A. If there is no solution, return "no solution" (quotes for clarity).
Definition
- Class:
- RestoreExpression
- Method:
- restore
- Parameters:
- String
- Returns:
- String
- Method signature:
- String restore(String expression)
- (be sure your method is public)
Constraints
- expression will contain between 5 and 50 characters, inclusive.
- expression will be formatted as "A+B=C" (quotes for clarity), where A, B and C are nonnegative integers (without leading zeroes) with some digits possibly replaced by '?'.
Examples
"5+?=?4"
Returns: "5+9=14"
This is the example from the problem statement. 5+9=14 is the only solution.
"?+?=4"
Returns: "4+0=4"
There are five possible solutions, all of which have the same value of C. 4+0=4 maximizes A.
"?+?=?"
Returns: "9+0=9"
"?2+?2=4"
Returns: "no solution"
"??+1=1?"
Returns: "18+1=19"
"??????????+??????????=??????????"
Returns: "8999999999+1000000000=9999999999"
"123456789+987654321=1111111110"
Returns: "123456789+987654321=1111111110"
"?2?4?6?8?+9?7?5?2?=1?1?1?1?1?"
Returns: "928486889+90705029=1019191918"
"??+??????????????????????=??????????????????????"
Returns: "99+9999999999999999999900=9999999999999999999999"
"?+??????????????????????=???????????????????????"
Returns: "9+9999999999999999999999=10000000000000000000008"
"????????????????+????????????????=????????????????"
Returns: "8999999999999999+1000000000000000=9999999999999999"
"??1?2???3??4????+?6??7?8??9???4??=??2??3??4??5?6??"
Returns: "8319231930949299+1610708019010400=9929939949959699"
"??1?2???3??4????+?6??7?8??99??4??=??2??3??4??5?6?9"
Returns: "8319231930049299+1610708019910400=9929939949959699"
"3?+??=50"
Returns: "39+11=50"
"?50+?50=100"
Returns: "no solution"
"9?9+??=999"
Returns: "989+10=999"
"???+?=???0"
Returns: "999+1=1000"
"1234567891234567+1234567891234567=2469135782469134"
Returns: "1234567891234567+1234567891234567=2469135782469134"
"?2345??891234567+1?34??6891234567=2469???78246???4"
Returns: "1234599891234567+1234996891234567=2469596782469134"
"?2345??891???567+1?34??6891?3?5?7=2469???78246???4"
Returns: "1234599891438567+1234996891030597=2469596782469164"
"?2345??891???55+??34??6891?3?5?=?2469???78246???"
Returns: "923459989143855+323499689103059=1246959678246914"
"?2345??891???55+1?34??6891?3?5?=?2469???78246???"
Returns: "no solution"
"?2345??891???55+2?34??6891?3?5?=?2469???78246???"
Returns: "no solution"
"?2345??891???55+4?34??6891?3?5?=?2469???78246???"
Returns: "823459989143855+423499689103059=1246959678246914"
"?2345??891???55+??34??6891?3?5?=12469???78246???"
Returns: "923459989143855+323499689103059=1246959678246914"
"?2345??891???55+4?34??6891?3?5?=?2469???78246??1"
Returns: "823459989143855+423499689103056=1246959678246911"
"?2345??891???55+4?34??6891?3?5?=?2469???78246??2"
Returns: "823459989143855+423499689103057=1246959678246912"
"?2345??891???55+4?34??6891?3?5?=?2469???78246??3"
Returns: "823459989143855+423499689103058=1246959678246913"
"?2345??891???55+4134??6891?3?5?=?2469???78246??3"
Returns: "no solution"
"581+4??=100?"
Returns: "581+428=1009"
"5???????????????+????????????????=7???????????????"
Returns: "5999999999999999+2000000000000000=7999999999999999"
"30+??=50"
Returns: "30+20=50"
"9+?=?1"
Returns: "9+2=11"
"??+44=96"
Returns: "52+44=96"
"53+44=96"
Returns: "no solution"
"??+??=96"
Returns: "86+10=96"
"8??+??=9?6"
Returns: "899+97=996"
"9?+1??=106"
Returns: "no solution"
"??+?=18"
Returns: "18+0=18"
"?+??=18"
Returns: "8+10=18"
"15+??=15"
Returns: "no solution"
"??+15=15"
Returns: "no solution"
"1+2=4"
Returns: "no solution"
"15+15=??"
Returns: "15+15=30"
"1+2=?4"
Returns: "no solution"
"1?+2?=4?"
Returns: "19+29=48"
"?+???????????????????????=????????????????????????"
Returns: "9+99999999999999999999999=100000000000000000000008"
"???????????????????????+?=????????????????????????"
Returns: "99999999999999999999999+9=100000000000000000000008"
"??+??????????????????????=????????????????????????"
Returns: "no solution"
"?????????????????????+???=????????????????????????"
Returns: "no solution"
"8+8=6"
Returns: "no solution"
"8+8=16"
Returns: "8+8=16"
"1+9999999999999999999999?=???????????????????????"
Returns: "1+99999999999999999999998=99999999999999999999999"
"1+9999999999999999999999?=????????????????????????"
Returns: "1+99999999999999999999999=100000000000000000000000"
"9999999999999999999999?+1=???????????????????????"
Returns: "99999999999999999999998+1=99999999999999999999999"
"9999999999999999999999?+1=????????????????????????"
Returns: "99999999999999999999999+1=100000000000000000000000"
"?+?=19"
Returns: "no solution"
"?+?=0"
Returns: "0+0=0"
"1+99999999999999999999999=???????????????????????"
Returns: "no solution"
"99999999999999999999999+1=???????????????????????"
Returns: "no solution"
"?????????6????????????+?=?????????7????????????"
Returns: "9999999996999999999999+9=9999999997000000000008"
"???????????????9+???????????????9=???????????????9"
Returns: "no solution"
"?+?=4"
Returns: "4+0=4"
"1?2?3?4?5?6?7?8+???????????????=2?3?4?5?6?7?8?9"
Returns: "192939495969798+101010101010101=293949596979899"
"??????????????????????+??=????10????5???????????"
Returns: "9999109999599999999989+10=9999109999599999999999"
"?0?7??????3?0???+?07???3???0????=??0?10????5?????"
Returns: "9097999699390999+807110300209000=9905109999599999"
"?????2+?????2=4"
Returns: "no solution"
"???????????4+???????????7=???????????2"
Returns: "no solution"