当前位置:网站首页>Leetcode daily question (2232. minimize result by addressing parents to expression)
Leetcode daily question (2232. minimize result by addressing parents to expression)
2022-07-03 09:33:00 【wangjun861205】
You are given a 0-indexed string expression of the form “+” where and 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.
use / and % Operation splits numbers , Then find the smallest combination , Be careful /1 and %1 Handling of special situations
impl Solution {
pub fn minimize_result(expression: String) -> String {
let tokens: Vec<&str> = expression.split("+").collect();
let left = tokens[0].parse::<i32>().unwrap();
let right = tokens[1].parse::<i32>().unwrap();
let mut ans = left + right;
let mut ans_str = expression.clone();
let mut left_exp = 0;
let mut right_exp = 0;
while left / 10i32.pow(left_exp) > 0 {
let mut a = left / 10i32.pow(left_exp);
let mut b = left % 10i32.pow(left_exp);
if a == left {
a = 1;
b = left;
}
while right / 10i32.pow(right_exp) > 0 {
let c = right / 10i32.pow(right_exp);
let mut d = right % 10i32.pow(right_exp);
if c == right {
d = 1;
}
let v = a * (b + c) * d;
if v < ans {
let mut s = String::new();
if left_exp == 0 {
s.push_str(&format!("({}", left));
} else {
s.push_str(&format!("{}({}", a, b));
}
s.push('+');
if right_exp == 0 {
s.push_str(&format!("{})", right));
} else {
s.push_str(&format!("{}){}", c, d))
}
ans_str = s;
ans = v;
}
right_exp += 1;
}
left_exp += 1;
right_exp = 0;
}
if ans_str == expression {
ans_str.insert(0, '(');
ans_str.push(')');
}
ans_str
}
}
边栏推荐
- [CSDN] C1 training problem analysis_ Part III_ JS Foundation
- Serializer rewrite: update and create methods
- Jetson Nano 自定义启动图标kernel Logo cboot logo
- Temper cattle ranking problem
- Hudi learning notes (III) analysis of core concepts
- Hudi quick experience (including detailed operation steps and screenshots)
- [untitled] use of cmake
- 从0开始使用pnpm构建一个Monorepo方式管理的demo
- CATIA automation object architecture - detailed explanation of application objects (III) systemservice
- 用Redis实现分布式锁
猜你喜欢
![[point cloud processing paper crazy reading frontier version 11] - unsupervised point cloud pre training via occlusion completion](/img/76/b92fe4549cacba15c113993a07abb8.png)
[point cloud processing paper crazy reading frontier version 11] - unsupervised point cloud pre training via occlusion completion

Beego learning - Tencent cloud upload pictures

软件测试工程师是做什么的 通过技术测试软件程序中是否有漏洞

Flink学习笔记(九)状态编程

PolyWorks script development learning notes (II) -treeview basic operations
![[point cloud processing paper crazy reading classic version 13] - adaptive graph revolutionary neural networks](/img/61/aa8d0067868ce9e28cadf5369cd65e.png)
[point cloud processing paper crazy reading classic version 13] - adaptive graph revolutionary neural networks

Principles of computer composition - cache, connection mapping, learning experience

2022-2-14 learning the imitation Niuke project - send email

Hudi 快速体验使用(含操作详细步骤及截图)
![[kotlin puzzle] what happens if you overload an arithmetic operator in the kotlin class and declare the operator as an extension function?](/img/fc/5c71e6457b836be04583365edbe08d.png)
[kotlin puzzle] what happens if you overload an arithmetic operator in the kotlin class and declare the operator as an extension function?
随机推荐
Matlab dichotomy to find the optimal solution
Notes on numerical analysis (II): numerical solution of linear equations
QT sub window is blocked, and the main window cannot be clicked after the sub window pops up
PolyWorks script development learning notes (III) -treeview advanced operation
Vscode Arduino installation Library
Redis learning (I)
[kotlin puzzle] what happens if you overload an arithmetic operator in the kotlin class and declare the operator as an extension function?
Go language - IO project
Nodemcu-esp8266 development (vscode+platformio+arduino framework): Part 2 --blinker_ Hello_ WiFi (lighting technology - Mobile App control routine)
Word segmentation in full-text indexing
Linxu learning (4) -- Yum and apt commands
Spark structured stream writing Hudi practice
Crawler career from scratch (3): crawl the photos of my little sister ③ (the website has been disabled)
LeetCode每日一题(931. Minimum Falling Path Sum)
Jestson nano downloads updated kernel and DTB from TFTP server
Hudi学习笔记(三) 核心概念剖析
一款开源的Markdown转富文本编辑器的实现原理剖析
IDEA 中使用 Hudi
LeetCode每日一题(1996. The Number of Weak Characters in the Game)
文件系统中的目录与切换操作