返回介绍

solution / 2200-2299 / 2232.Minimize Result by Adding Parentheses to Expression / README_EN

发布于 2024-06-17 01:03:08 字数 5494 浏览 0 评论 0 收藏 0

2232. Minimize Result by Adding Parentheses to Expression

中文文档

Description

You are given a 0-indexed string expression of the form "<num1>+<num2>" where <num1> and <num2> represent positive integers.

Add a pair of parentheses to expression such that after the addition of parentheses, expression is a valid mathematical expression and evaluates to the smallest possible value. The left parenthesis must be added to the left of '+' and the right parenthesis must be added to the right of '+'.

Return expression_ after adding a pair of parentheses such that _expression_ evaluates to the smallest possible value._ If there are multiple answers that yield the same result, return any of them.

The input has been generated such that the original value of expression, and the value of expression after adding any pair of parentheses that meets the requirements fits within a signed 32-bit integer.

 

Example 1:

Input: expression = "247+38"
Output: "2(47+38)"
Explanation: The expression evaluates to 2 * (47 + 38) = 2 * 85 = 170.
Note that "2(4)7+38" is invalid because the right parenthesis must be to the right of the '+'.
It can be shown that 170 is the smallest possible value.

Example 2:

Input: expression = "12+34"
Output: "1(2+3)4"
Explanation: The expression evaluates to 1 * (2 + 3) * 4 = 1 * 5 * 4 = 20.

Example 3:

Input: expression = "999+999"
Output: "(999+999)"
Explanation: The expression evaluates to 999 + 999 = 1998.

 

Constraints:

  • 3 <= expression.length <= 10
  • expression consists of digits from '1' to '9' and '+'.
  • expression starts and ends with digits.
  • expression contains exactly one '+'.
  • The original value of expression, and the value of expression after adding any pair of parentheses that meets the requirements fits within a signed 32-bit integer.

Solutions

Solution 1

class Solution:
  def minimizeResult(self, expression: str) -> str:
    l, r = expression.split("+")
    m, n = len(l), len(r)
    mi = inf
    ans = None
    for i in range(m):
      for j in range(n):
        c = int(l[i:]) + int(r[: j + 1])
        a = 1 if i == 0 else int(l[:i])
        b = 1 if j == n - 1 else int(r[j + 1 :])
        if (t := a * b * c) < mi:
          mi = t
          ans = f"{l[:i]}({l[i:]}+{r[: j + 1]}){r[j + 1:]}"
    return ans
class Solution {
  public String minimizeResult(String expression) {
    int idx = expression.indexOf('+');
    String l = expression.substring(0, idx);
    String r = expression.substring(idx + 1);
    int m = l.length(), n = r.length();
    int mi = Integer.MAX_VALUE;
    String ans = "";
    for (int i = 0; i < m; ++i) {
      for (int j = 0; j < n; ++j) {
        int c = Integer.parseInt(l.substring(i)) + Integer.parseInt(r.substring(0, j + 1));
        int a = i == 0 ? 1 : Integer.parseInt(l.substring(0, i));
        int b = j == n - 1 ? 1 : Integer.parseInt(r.substring(j + 1));
        int t = a * b * c;
        if (t < mi) {
          mi = t;
          ans = String.format("%s(%s+%s)%s", l.substring(0, i), l.substring(i),
            r.substring(0, j + 1), r.substring(j + 1));
        }
      }
    }
    return ans;
  }
}
function minimizeResult(expression: string): string {
  const [n1, n2] = expression.split('+');
  let minSum = Number.MAX_SAFE_INTEGER;
  let ans = '';
  let arr1 = [],
    arr2 = n1.split(''),
    arr3 = n2.split(''),
    arr4 = [];
  while (arr2.length) {
    (arr3 = n2.split('')), (arr4 = []);
    while (arr3.length) {
      let cur = (getNum(arr2) + getNum(arr3)) * getNum(arr1) * getNum(arr4);
      if (cur < minSum) {
        minSum = cur;
        ans = `${arr1.join('')}(${arr2.join('')}+${arr3.join('')})${arr4.join('')}`;
      }
      arr4.unshift(arr3.pop());
    }
    arr1.push(arr2.shift());
  }
  return ans;
}

function getNum(arr: Array<string>): number {
  return arr.length ? Number(arr.join('')) : 1;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文