当前位置:网站首页>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
边栏推荐
- Mysql 45讲学习笔记(二十五)MYSQL保证高可用
- SQL注入 Less47(报错注入) 和Less49(时间盲注)
- try-catch中含return
- Installation of mysql5.7.37 under CentOS7 [perfect solution]
- [C language foundation] Solve C language error: expected ';', ',' or ')' before '&' token
- The principle of complete replication of virtual machines (cloud computing)
- Moxa NPort device flaw could expose critical infrastructure to devastating attack
- 6、显示评论和回复
- SQL注入 Less54(限制次数的SQL注入+union注入)
- 下载jar包的好地方
猜你喜欢
Mysql 45讲学习笔记(二十三)MYSQL怎么保证数据不丢
The simulation application of common mode inductance is here, full of dry goods for everyone
Difference between CMOS and TTL?
Discourse Custom Header Links
QML的使用
Graphical lower_bound & upper_bound
【编译原理】递归下降语法分析设计原理与实现
数学解决——环形链表问题
SQL injection Less54 (limited number of SQL injection + union injection)
YOLOV5 study notes (2) - environment installation + operation + training
随机推荐
字体压缩神器font-spider的使用
华为分布式存储FusionStorage知识点总结【面试篇】
【CocosCreator 3.5】CocosCreator 获取网络状态
【C语言】三子棋(经典解法+一览图)
4. Sensitive word filtering (prefix tree)
跨专业考研难度大?“上岸”成功率低?这份实用攻略请收下!
Uninstallation of mysql5.7.37 under CentOS7 [perfect solution]
19. Support Vector Machines - Intuitive Understanding of Optimization Objectives and Large Spacing
【CV项目调试】CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT问题
【C语言】进制转换一般方法
Classic linked list OJ strong training problem - fast and slow double pointer efficient solution
mycat的主从关系 垂直分库 水平分表 以及mycat分片联表查询的配置详解(mysql5.7系列)
The difference between link and @import
return in try-catch
6、显示评论和回复
Moxa NPort device flaw could expose critical infrastructure to devastating attack
execsnoop tool
冒泡排序、选择排序、直接插入排序、二分法查找
原子操作 CAS
开题报告之论文框架