1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| class Solution:
def minimizeResult(self, expression: str) -> str:
plus = expression.index('+')
v = []
lp, rp = [], []
l = int(expression[:plus])
mul = 10
while l * 10 >= mul:
lp.append((l // mul, l % mul))
mul *= 10
r = int(expression[plus + 1:])
mul = 1
while r // mul > 0:
rp.append((r % mul, r // mul))
mul *= 10
for m1, s1 in lp:
for m2, s2 in rp:
if not v or max(1, m1) * (s1 + s2) * max(1, m2) < max(1, v[0]) * (v[1] + v[2]) * max(1, v[3]):
v = [m1, s1, s2, m2]
return (str(v[0]) if v[0] else "") + "(" + str(v[1]) + "+" + str(v[2]) + ")" + (str(v[3]) if v[3] else "")
|