Problem Statement
You are given a
- Excellent: A group that contains only the same digits. For example, 000 or 77.
- Good: A group of 3 digits, 2 of which are the same. For example, 030, 229 or 166.
- Usual: A group in which all the digits are distinct. For example, 123 or 90.
The quality of a group assignment is defined as 2 * (number of excellent groups) + (number of good groups). Divide the number into groups such that the quality is maximized, and return the result as a
Definition
- Class:
- PhoneNumbers
- Method:
- bestNumber
- Parameters:
- String
- Returns:
- String
- Method signature:
- String bestNumber(String number)
- (be sure your method is public)
Notes
- A String A comes before a String B lexicographically if A is a proper prefix of B, or if A has a smaller character at the first position where the strings differ. When comparing the characters, refer to the following list of characters in ascending order: '-', '0', '1', ..., '9'.
Constraints
- number will contain between 2 and 50 characters, inclusive.
- Each character in number will be a digit ('0'-'9').
Examples
"5088638"
Returns: "50-88-638"
There are three possible ways to divide this number into groups: 508-86-38 (quality 0), 50-886-38 (quality 1) and 50-88-638 (quality 2). The last option is the best one.
"0123456789"
Returns: "01-23-45-67-89"
No matter how you divide this number, the quality will be 0. Choose the division that comes earliest lexicographically.
"09"
Returns: "09"
With a 2-digit phone number, there is only one choice.
"54545454545454545454"
Returns: "54-545-454-545-454-545-454"
The best way to divide this number is to create six 3-digit good groups and one 2-digit usual group. Put the 2-digit group at the beginning to achieve the lexicographically earliest result.
"00110001011100010111"
Returns: "00-11-00-010-11-10-00-101-11"
"10100101001100000011011100110000001001111001010011"
Returns: "101-00-101-00-11-00-00-00-11-01-11-00-11-00-00-00-100-11-11-00-101-00-11"
"91541585136456487689164799429009697882094458654314"
Returns: "91-541-585-13-64-56-48-76-89-16-47-99-429-00-96-97-88-209-44-58-65-43-14"
"99999999999999999999999999999999999999999999999999"
Returns: "99-99-99-99-99-99-99-99-99-99-99-99-99-99-99-99-99-99-99-99-99-99-99-99-99"
"0000000000000000000000000000000000000000000000000"
Returns: "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-000"
"20011200111020001102210200010100021022211200221120"
Returns: "200-11-200-111-020-00-11-02-21-020-00-101-00-02-10-222-11-200-22-11-20"
"01311313120232332023201321001022311313000022022320"
Returns: "013-11-313-120-232-33-20-232-01-321-00-10-22-311-313-00-00-22-022-320"
"14334202334111313314110303311030220040424003224230"
Returns: "14-33-42-02-33-41-11-31-33-14-11-030-33-11-030-22-00-40-424-00-32-242-30"
"13513050553545130133034452035214302203214415405435"
Returns: "13-513-050-55-35-45-13-01-33-03-44-52-03-52-14-30-22-03-21-44-15-40-54-35"
"54146626261160633556612150312454536333106263425205"
Returns: "54-14-66-26-26-11-606-33-55-66-121-50-31-24-545-363-33-10-626-34-252-05"
"24200114065714171077426260745217015737774105631556"
Returns: "242-00-11-40-657-141-710-77-42-626-07-45-21-70-15-737-77-41-05-631-556"
"55340367187830150580064234118776250778107816820780"
Returns: "55-34-03-671-878-30-15-058-00-64-234-11-877-62-50-77-81-07-81-68-20-780"
"34154334"
Returns: "34-154-334"
"306373"
Returns: "306-373"
"01134023"
Returns: "011-34-023"
"00010201200010043100010000241020061101022000010301"
Returns: "00-01-020-12-00-01-00-431-00-01-00-00-24-102-00-611-010-22-00-00-10-301"
"000"
Returns: "000"
"02203302132"
Returns: "02-20-33-02-132"
"000101110011001111010010111111111001101"
Returns: "00-010-111-00-11-00-11-11-01-00-101-11-11-11-11-00-11-01"
"0010"
Returns: "00-10"
"42200132120320321102334320144302414414"
Returns: "422-00-13-212-03-20-32-11-02-33-43-201-44-30-241-44-14"
"2211002212120"
Returns: "22-11-00-22-121-20"
"220002010020011100220222221100121200211120010012"
Returns: "22-00-02-01-00-200-111-00-22-02-22-22-11-00-12-12-00-21-11-20-01-00-12"
"485023477846544251846166150463"
Returns: "48-50-234-77-84-65-44-25-18-461-66-15-04-63"
"57773653582110375248062255372"
Returns: "57-77-36-535-82-11-03-75-24-806-22-55-372"
"2156456720365164274463"
Returns: "21-56-45-67-20-36-51-64-27-44-63"
"11101"
Returns: "11-101"
"32200"
Returns: "322-00"
"510302"
Returns: "51-03-02"
"244143"
Returns: "244-143"
"0304313"
Returns: "03-04-313"
"7716173"
Returns: "77-161-73"
"0770637"
Returns: "077-06-37"
"11111210"
Returns: "11-11-12-10"
"45040104"
Returns: "45-040-104"
"14044140"
Returns: "140-44-140"
"14503021"
Returns: "145-030-21"
"00111100111000011110000000000011110000001111000000"
Returns: "00-11-11-00-111-00-00-11-11-00-00-00-00-000-11-11-00-00-00-11-11-00-00-00"
"12111002200110001211112212100011001100002200002211"
Returns: "121-11-00-22-00-11-00-012-11-11-22-121-000-11-00-11-00-00-22-00-00-22-11"
"33330111122112223300311331133110010331133113003000"
Returns: "33-33-011-11-22-11-222-33-00-311-33-11-33-11-00-10-33-11-33-11-30-030-00"
"44231111223310000011000021234334433341104404001133"
Returns: "44-23-11-11-22-33-10-00-00-11-00-00-212-34-33-44-33-34-11-04-404-00-11-33"
"55021142455220331144252001133113312114425442145211"
Returns: "55-02-11-424-55-22-033-11-44-252-00-11-33-11-33-12-11-44-25-44-21-452-11"
"22245566611552121435502631114211661060666622554411"
Returns: "22-24-55-666-11-55-212-143-55-02-63-11-142-11-66-10-60-66-66-22-55-44-11"
"55007224403646615451533337733615330704561144745500"
Returns: "55-00-722-44-03-64-66-154-515-33-33-77-33-615-33-070-456-11-44-74-55-00"
"77001888343843664400676131000406773440032887355886"
Returns: "77-00-18-88-343-843-66-44-00-676-131-00-04-06-77-344-00-32-88-73-55-886"
"99262708866116611056449926544662599777846012777668"
Returns: "99-262-70-88-66-11-66-11-056-44-99-265-44-66-25-99-77-78-46-01-27-77-668"
"01010100100100010101101110101000101011010101001001"
Returns: "010-101-00-10-01-00-01-010-11-01-11-01-01-00-01-010-11-010-101-00-10-01"
"20202101210121201201010112010102102101021201121221"
Returns: "20-202-10-12-101-212-01-201-010-11-20-101-02-10-21-010-21-20-11-21-221"
"23012312021201310321302321201203213011132332010320"
Returns: "23-01-231-202-120-131-03-21-30-23-212-01-20-32-13-01-11-32-33-20-10-320"
"20431403202132320143043042142432103142323240342341"
Returns: "20-43-14-03-202-13-232-01-43-04-30-421-424-32-10-31-42-323-24-03-42-341"
"05150525041341204230132102130534053241203431203120"
Returns: "05-150-525-04-13-41-20-42-30-13-21-02-13-05-34-05-32-41-20-343-12-03-120"
"06251456340216512014563140101645203513062465164204"
Returns: "06-25-14-56-34-02-16-51-20-14-56-31-40-101-64-52-03-51-30-62-46-51-64-204"
"47607342675370560475205370631042351645026456247315"
Returns: "47-60-73-42-67-53-70-56-04-75-20-53-70-63-10-42-35-16-45-02-64-56-24-73-15"
"67561285025743243613854671378130758735246374804143"
Returns: "67-56-12-85-02-57-43-24-36-13-85-46-71-37-81-30-75-87-35-24-63-74-80-41-43"
"81328760572401824356139218250470932078207218954065"
Returns: "81-32-87-60-57-24-01-82-43-56-13-92-18-25-04-70-93-20-78-20-72-18-95-40-65"
"10010011111011000100101101111100010011110100100000"
Returns: "10-01-00-11-11-10-11-00-01-00-10-11-01-11-11-00-01-00-11-11-01-00-10-00-00"
"00110212112012110111111011021101220212110102110002"
Returns: "00-11-02-12-11-20-12-11-01-11-11-10-11-02-11-01-22-02-12-11-01-02-11-00-02"
"01102211103211012011102221300023330022312022110322"
Returns: "01-10-22-11-10-32-11-01-20-11-10-22-21-30-00-23-33-00-22-31-20-22-11-03-22"
"21414421130013112200222341441240223242002303442400"
Returns: "21-41-44-21-13-00-13-11-22-00-22-23-41-44-12-40-22-32-42-00-23-03-44-24-00"
"03540052450342352333451351041340130433320314523041"
Returns: "03-54-00-52-45-03-42-35-23-33-45-13-51-04-13-40-13-04-33-32-03-14-52-30-41"
"31402532051162510032561123065142632250444061254214"
Returns: "31-40-25-32-05-11-62-51-00-32-56-11-23-06-51-42-63-22-50-44-40-61-25-42-14"
"74271467467507367522165024225433700033540627551243"
Returns: "74-27-14-67-46-75-07-36-75-22-16-50-24-22-54-33-70-00-33-54-06-27-55-12-43"
"72354308637108116341207750664876123105553207103148"
Returns: "72-35-43-08-63-71-08-11-63-41-20-77-50-66-48-76-12-31-05-55-32-07-10-31-48"
"25179966283561930427321934975065140596826587357342"
Returns: "25-17-99-66-28-35-61-93-04-27-32-19-34-97-50-65-14-05-96-82-65-87-35-73-42"
"01010101011101010110101111011000001011101011000101"
Returns: "010-101-010-11-101-010-11-010-11-11-011-00-00-010-111-010-11-000-101"
"11100122110121102212010120212102022200212010120220"
Returns: "111-00-122-11-012-11-022-120-101-202-121-020-222-00-212-010-120-220"
"12311211231202320323031223202021013232313301012002"
Returns: "123-11-211-231-202-320-323-031-22-320-202-101-323-231-33-010-12-002"
"02214231340312142143402030401033201040231343414020"
Returns: "022-142-313-403-121-421-434-020-304-010-33-201-040-231-343-414-020"
"20035304530353423215151512103144434052010505424313"
Returns: "200-353-045-303-534-232-151-515-121-031-44-434-052-010-505-424-313"
"16414153121512112410501216660255111606536353034335"
Returns: "16-414-153-121-512-11-241-050-121-66-602-55-111-606-536-353-034-335"
"54575201050514150526265436345014163752435631304522"
Returns: "545-752-010-505-141-505-262-654-363-450-141-63-75-24-356-313-045-22"
"63206071718346438430282787324418817108108042343837"
Returns: "632-060-717-183-464-38-430-282-787-32-44-188-171-081-080-42-343-837"
"20539414734731211123458564916135302954562607522833"
Returns: "20-539-414-73-473-121-11-234-585-649-161-353-029-545-626-075-22-833"
"11235813213455891442333776109871597258441816765"
Returns: "11-23-58-13-21-34-55-891-44-23-33-77-61-09-87-15-97-258-44-181-67-65"
"12481632641282565121024204840968192163843276865536"
Returns: "12-48-16-32-641-282-565-121-02-420-484-09-68-19-21-63-84-327-686-55-36"
"1234567891011121314151617181920212223242526272829"
Returns: "12-34-56-78-910-11-121-314-151-617-181-92-021-22-23-242-526-272-829"
"546565"
Returns: "546-565"
"01234567800123456780012345678001234567890123456780"
Returns: "01-23-45-678-00-12-34-56-78-00-12-34-56-78-00-12-34-56-78-90-12-34-56-780"
"54545454545454545454545454545454545454541234567890"
Returns: "545-454-545-454-545-454-545-454-545-454-545-454-545-41-23-45-67-890"
"545454545454545454548686868686868686868619191919"
Returns: "54-545-454-545-454-545-454-86-868-686-868-686-868-686-19-191-919"
"77777777777777777777777777777777777777777012345667"
Returns: "77-77-77-77-77-77-77-77-77-77-77-77-77-77-77-77-77-77-77-77-70-12-345-667"
"0101010101010101102020202020200022202200220002234"
Returns: "010-101-010-101-010-11-020-202-020-202-000-22-20-22-00-22-000-22-34"
"36753562912709360626187920237592289736129319478450"
Returns: "367-535-62-91-27-09-360-626-18-79-202-37-59-22-89-73-61-29-31-94-78-450"
"5355533535553"
Returns: "535-55-33-53-55-53"
"12233344235673355533355522244200990909341299883377"
Returns: "122-333-44-23-567-33-55-53-33-55-52-22-44-200-99-090-93-412-99-88-33-77"
"1234"
Returns: "12-34"
"01234567890123456789012345678901234567890123456789"
Returns: "01-23-45-67-89-01-23-45-67-89-01-23-45-67-89-01-23-45-67-89-01-23-45-67-89"
"55555555555555555555555555555555555555555555555555"
Returns: "55-55-55-55-55-55-55-55-55-55-55-55-55-55-55-55-55-55-55-55-55-55-55-55-55"
"00110001011100010111010101010101010100000111110101"
Returns: "00-11-00-010-111-00-010-11-101-010-101-010-101-010-00-00-11-11-10-101"
"1333327895457675678333332156733331"
Returns: "133-33-27-89-545-767-56-78-33-33-32-15-67-33-331"
"21346959187456038475620985692837456145908273658923"
Returns: "21-346-959-18-74-56-03-84-75-62-09-85-69-28-37-45-61-45-90-82-73-65-89-23"
"78956741085209630404001354368674657983213236365554"
Returns: "78-95-67-41-08-52-09-630-404-00-13-543-686-74-65-79-83-21-323-636-55-54"
"1111010010100010011111010010100001111010001101001"
Returns: "11-11-01-00-101-00-01-00-11-11-101-00-101-00-00-11-11-010-00-11-01-001"
"98745686496098432695862614965097638234665911123284"
Returns: "98-745-686-49-60-98-43-26-958-626-14-96-50-97-63-82-34-66-59-111-232-84"
"3456175745458483673782749297038306830682073627287"
Returns: "34-56-17-574-545-848-36-737-82-74-929-70-383-06-83-06-82-07-36-272-87"
"57476678767877743057776653097675657376567865656665"
Returns: "57-47-66-78-76-787-77-43-05-777-66-53-09-767-565-737-656-786-565-66-65"
"00112233445566778889912345678901928374650135790864"
Returns: "00-11-22-33-44-55-66-77-888-99-12-34-56-78-90-19-28-37-46-50-13-57-90-864"
"01234567899876543210002355578801234567899876543310"
Returns: "01-23-45-678-99-87-65-43-21-00-023-55-57-88-01-23-45-678-99-87-654-33-10"
"88888"
Returns: "88-888"
"001100010111000101001101010010010111"
Returns: "00-11-00-010-11-10-00-101-00-11-01-01-00-100-101-11"
"45345334533454555453434434545434554334554334543444"
Returns: "45-345-33-45-33-454-55-545-343-44-34-545-434-55-43-34-55-433-45-434-44"
"9191919191919191919191919191919"
Returns: "91-91-919-191-919-191-919-191-919-191-919"
"123456123456123456123456123456123456123456"
Returns: "12-34-56-12-34-56-12-34-56-12-34-56-12-34-56-12-34-56-12-34-56"
"12345678901234567890123456789012345678901234567890"
Returns: "12-34-56-78-90-12-34-56-78-90-12-34-56-78-90-12-34-56-78-90-12-34-56-78-90"
"22334455662233445566223344556622334455662233445566"
Returns: "22-33-44-55-66-22-33-44-55-66-22-33-44-55-66-22-33-44-55-66-22-33-44-55-66"
"1123545787364532453257294927364643874637678688888"
Returns: "11-23-545-787-36-45-32-45-32-572-949-27-36-464-38-74-63-767-868-88-88"
"545555545454545455545454555454545454555411111"
Returns: "545-55-55-454-545-454-55-545-454-55-54-545-454-545-55-41-11-11"
"01110010110110100011010111100110111110101111100101"
Returns: "01-11-00-10-11-011-010-00-11-010-11-11-00-11-01-11-11-010-11-111-00-101"
"5523455989662329876554321155234559896623298765544"
Returns: "55-234-55-989-66-232-98-76-55-432-11-55-234-55-989-66-232-98-76-55-44"
"11101110111011100111011101110111011101110111011101"
Returns: "11-10-11-10-11-101-11-00-11-10-11-10-11-10-11-10-11-10-11-10-11-10-11-101"
"0011000101110001011100111001011001001010010100101"
Returns: "00-11-00-010-11-10-00-101-11-00-111-00-10-11-00-100-101-00-101-00-101"
"003"
Returns: "003"
"11122248484999944487538756827757755344433333234248"
Returns: "11-12-22-48-484-99-99-44-48-75-38-75-682-77-577-55-34-44-33-33-323-42-48"
"222545"
Returns: "222-545"
"11111111111111111111111111111111111111111111111111"
Returns: "11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11"
"00000000000000000000000000000000000000000000000000"
Returns: "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00"
"11001101010100110101100111012341101011000001101010"
Returns: "11-00-11-010-101-00-11-010-11-00-11-101-234-11-010-11-00-000-11-01-010"
"54545454545454545454545454545454545454546677883399"
Returns: "54-54-545-454-545-454-545-454-545-454-545-454-545-454-66-77-88-33-99"
"222222222222222222222222222222222222222222222222"
Returns: "22-22-22-22-22-22-22-22-22-22-22-22-22-22-22-22-22-22-22-22-22-22-22-22"
"12335123351233512335123351233512335123351233512335"
Returns: "12-33-512-33-512-33-512-33-512-33-512-33-512-33-512-33-512-33-512-335"
"11111111111111111111111111122222222221111111111111"
Returns: "11-11-11-11-11-11-11-11-11-11-11-11-111-22-22-22-22-22-11-11-11-11-11-111"
"1241247125127741524123511421518881"
Returns: "12-41-24-71-25-12-77-41-52-41-235-11-42-151-88-81"
"1001011011101010001010111101110000110000010"
Returns: "10-010-11-01-11-01-01-00-01-010-11-11-01-11-00-00-11-00-00-010"
"91919191919191919191919199191919191919191919191919"
Returns: "919-191-919-191-919-191-919-191-99-191-919-191-919-191-919-191-919"
"1224"
Returns: "12-24"
"12121212121212121212121212121212121212121212121212"
Returns: "12-121-212-121-212-121-212-121-212-121-212-121-212-121-212-121-212"
"98443344575898443344575898443344575898443344575898"
Returns: "98-44-33-44-575-898-44-33-44-575-898-44-33-44-575-898-44-33-44-575-898"
"10111011010"
Returns: "10-11-10-11-010"
"545874654687465146879876521320109496879874"
Returns: "545-87-46-54-68-74-65-14-68-79-87-65-21-32-010-949-68-79-874"
"87888888898888888888585888888884888883888888888888"
Returns: "87-88-88-88-89-88-88-88-88-88-585-88-88-88-88-48-88-88-388-88-88-88-88-88"
"000011001110110110000001000001"
Returns: "00-00-11-00-11-10-11-011-00-00-00-10-00-001"
"22222222222222222222222212222222222222222222222222"
Returns: "22-22-22-22-22-22-22-22-22-22-22-22-12-22-22-22-22-22-22-22-22-22-22-22-22"
"12345678901234567890123456789012345678905432167890"
Returns: "12-34-56-78-90-12-34-56-78-90-12-34-56-78-90-12-34-56-78-90-54-32-16-78-90"
"67300366432437582881"
Returns: "673-00-366-43-24-37-582-881"
"7777754545454545412212221212177777"
Returns: "77-77-75-454-545-454-541-22-12-22-12-121-77-777"
"10111"
Returns: "101-11"
"1101100001101110101110101001100110010010100118110"
Returns: "11-011-00-00-11-01-11-010-11-10-101-00-11-00-11-00-100-101-00-11-81-10"
"0101100200011103102101010101010211221121111300200"
Returns: "010-11-00-20-00-11-10-31-02-10-101-010-101-02-11-22-11-21-11-13-00-200"
"59692573645723686555555237465723657623945762384752"
Returns: "59-69-25-73-64-57-23-686-55-55-55-23-74-65-72-36-57-62-39-45-76-23-84-752"
"1015"
Returns: "10-15"
"11221106666666110454545777778888010141123445566010"
Returns: "11-22-11-06-66-66-66-11-04-54-545-77-777-88-88-010-14-11-23-44-55-66-010"
"345112"
Returns: "345-112"
"3489875639749872697469750298764726573498746538723"
Returns: "34-898-75-63-97-49-87-26-97-46-97-50-29-87-64-72-65-73-49-87-46-53-87-23"
"12312312312312312312312312312312312312312312312312"
Returns: "12-31-23-12-31-23-12-31-23-12-31-23-12-31-23-12-31-23-12-31-23-12-31-23-12"
"12345678991234567899123456789912345678991234567899"
Returns: "12-34-56-78-99-12-34-56-78-99-12-34-56-78-99-12-34-56-78-99-12-34-56-78-99"
"41670808023164840155626686516036348567415776134120"
Returns: "41-67-08-080-23-16-484-01-55-62-66-86-51-60-363-48-56-74-15-77-61-34-120"
"111111111"
Returns: "11-11-11-111"
"23847238942384723894238472389423847238942384723894"
Returns: "23-84-72-38-94-23-84-72-38-94-23-84-72-38-94-23-84-72-38-94-23-84-72-38-94"
"1116411"
Returns: "11-164-11"
"4673286112367763636283040303188133232332300490393"
Returns: "46-73-286-11-236-77-63-636-28-304-030-31-88-133-232-33-23-00-490-393"
"02245678"
Returns: "022-45-678"