当前位置:网站首页>Addition and Subtraction of Scores in LeetCode Medium Questions
Addition and Subtraction of Scores in LeetCode Medium Questions
2022-07-31 03:02:00 【·The sea of stars】
题目
给定一个表示分数加减运算的字符串 expression ,你需要返回一个字符串形式的计算结果.
这个结果应该是不可约分的分数,即最简分数. 如果最终结果是一个整数,例如 2,你需要将它转换成分数形式,其分母为 1.所以在上述例子中, 2 应该被转换为 2/1.
示例 1:
输入: expression = “-1/2+1/2”
输出: “0/1”
示例 2:
输入: expression = “-1/2+1/2+1/3”
输出: “1/3”
示例 3:
输入: expression = “1/3-1/2”
输出: “-1/6”
提示:
输入和输出字符串只包含 ‘0’ 到 ‘9’ 的数字,以及 ‘/’, ‘+’ 和 ‘-’.
输入和输出分数格式均为 ±分子/分母.如果输入的第一个分数或者输出的分数是正数,则 ‘+’ 会被省略掉.
输入只包含合法的最简分数,每个分数的分子与分母的范围是 [1,10]. 如果分母是1,意味着这个分数实际上是一个整数.
输入的分数个数范围是 [1,10].
最终结果的分子与分母保证是 32 位整数范围内的有效整数.
来源:力扣(LeetCode)
解题思路
Using a simple stack was simulated,Due to the requirements of calculation in the title only addition and subtraction,So we default addition and every number with symbols withpython自带的eval进行计算,After every two Numbers for peace. In the stack until the elements in the stack a left.
class Solution:
def fractionAddition(self, expression: str) -> str:
if expression[0].isdigit():
expression='+'+expression
expression+='+'
temp=expression[0]
stack=[]
for i in expression[1:]:
if i=='-' or i=='+':
stack.append(temp)
temp=i
continue
temp+=i
while len(stack)!=1:
left=stack.pop()
right=stack.pop()
lnumerator,ldenominator=left[1:].split('/')
rnumerator,rdenominator=right[1:].split('/')
denominator=eval(ldenominator+'*'+rdenominator)
numerator=eval(rdenominator+'*'+left[0]+lnumerator+'+'+ldenominator+'*'+right[0]+rnumerator)
divisor=math.gcd(denominator,numerator)
denominator//=divisor
numerator//=divisor
if numerator>=0:
stack.append('+'+str(numerator)+'/'+str(denominator))
else:
stack.append(str(numerator)+'/'+str(denominator))
ans=stack.pop()
return ans[1:] if ans[0]=='+' else ans

边栏推荐
- Unity3D Button 鼠标悬浮进入与鼠标悬浮退出按钮事件
- CentOS7下mysql5.7.37的卸载【完美方案】
- Installation, start and stop of redis7 under Linux
- SQL注入 Less46(order by后的注入+rand()布尔盲注)
- [Android] Room - Alternative to SQLite
- 8、统一处理异常(控制器通知@ControllerAdvice全局配置类、@ExceptionHandler统一处理异常)
- 【C语言】求两个整数m和n的最大公因数和最小公倍数之和一般方法,经典解法
- QML的使用
- YOLOV5 study notes (2) - environment installation + operation + training
- The whole process scheduling, MySQL and Sqoop
猜你喜欢

Compile Hudi
![[Android] Room - Alternative to SQLite](/img/52/0bc1c0a3173da6d39224ad8440a462.png)
[Android] Room - Alternative to SQLite

自动化办公案例:如何自动生成期数据?

Mysql 45讲学习笔记(二十三)MYSQL怎么保证数据不丢

Classic linked list OJ strong training problem - fast and slow double pointer efficient solution

接口测试关键技术

YOLOV5学习笔记(二)——环境安装+运行+训练

11. Redis implements follow, unfollow, and follow and follower lists

8、统一处理异常(控制器通知@ControllerAdvice全局配置类、@ExceptionHandler统一处理异常)

10. Redis implements likes (Set) and obtains the total number of likes
随机推荐
Why is String immutable?
什么是分布式锁?实现分布式锁的三种方式
Chapter 9 SVM实践
工程(五)——小目标检测tph-yolov5
SQL注入 Less54(限制次数的SQL注入+union注入)
php 网站的多语言设置(IP地址区分国内国外)
Huawei od dice js
刚出道“一战成名”,安全、舒适一个不落
Clustering index, and what is the difference between a clustering index
MultipartFile文件上传
自动化办公案例:如何自动生成期数据?
Go 项目实战-获取多级分类下的全部商品
TCP详解(一)
下载jar包的好地方
【CV项目调试】CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT问题
Compile Hudi
StringJoiner详解
共模电感的仿真应用来了,满满的干货送给大家
What is distributed and clustered?What is the difference?
CefSharp入门-winform