1. 题目

给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果。
这个结果应该是不可约分的分数,即最简分数。
如果最终结果是一个整数,例如 2,你需要将它转换成分数形式,其分母为 1。
所以在上述例子中, 2 应该被转换为 2/1。

示例 1:
输入:"-1/2+1/2"
输出: "0/1"示例 2:
输入:"-1/2+1/2+1/3"
输出: "1/3"示例 3:
输入:"1/3-1/2"
输出: "-1/6"示例 4:
输入:"5/3+1/3"
输出: "2/1"说明:
输入和输出字符串只包含 '0' 到 '9' 的数字,以及 '/', '+' 和 '-'。
输入和输出分数格式均为 ±分子/分母。
如果输入的第一个分数或者输出的分数是正数,则 '+' 会被省略掉。
输入只包含合法的最简分数,每个分数的分子与分母的范围是  [1,10]。
如果分母是1,意味着这个分数实际上是一个整数。
输入的分数个数范围是 [1,10]。
最终结果的分子与分母保证是 32 位整数范围内的有效整数。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/fraction-addition-and-subtraction
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

class Solution {public:string fractionAddition(string expression) {bool positive = true, founddown = false;int up = 0, down = 0, a = 0, b = 0;for(int i = 0; i < expression.size(); ++i){if(expression[i] == '+'){add(up,down,a,b,positive);positive = true;founddown = false;//找到分母a=b=0;}else if(expression[i] == '-'){add(up,down,a,b,positive);positive = false;founddown = false;a=b=0;}else if(expression[i] == '/')founddown = true;else{if(founddown)b = b*10+expression[i]-'0';elsea = a*10+expression[i]-'0';}}add(up,down,a,b,positive);return to_string(up)+"/"+to_string(down);}void add(int &up, int &down, int a, int b, bool positive){if(down == 0 && b == 0)return;if(down == 0 && b != 0){up = positive?a:-a, down = b;return;}int t_up = 0, t_down = down*b;t_up += up*b + (positive?a:-a)*down;//交叉相乘int g = gcd(abs(t_up), t_down);//最大正公约数up = t_up/g;down = t_down/g;}int gcd(int a, int b){int r;while(b){r = a%b;a = b;b = r;}return a;}
};

0 ms 6.3 MB

LeetCode 592. 分数加减运算(字符串+最大公约数)相关推荐

  1. Leetcode 592. 分数加减运算 C++

    Leetcode 592. 分数加减运算 题目 给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即最简分数. 如果最终结果是一个整数,例如 ...

  2. 图解LeetCode——592. 分数加减运算(难度:中等)

    一.题目 给定一个表示分数加减运算的字符串 expression,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即:最简分数. 如果最终结果是一个整数,例如 2,你需要将它转换成 ...

  3. LeetCode 0592. 分数加减运算:手把手分步のC++讲解

    [LetMeFly]592.分数加减运算:手把手分步のC++讲解 力扣题目链接:https://leetcode.cn/problems/fraction-addition-and-subtracti ...

  4. 592.分数加减运算 纯纯的数学题,Python 7行代码+详细思路分享!

    592.分数加减运算 https://leetcode.cn/problems/fraction-addition-and-subtraction/solution/by-qingfengpython ...

  5. 【leetcode】592.分数加减运算(python)

    目录 一.题目描述 二.解题思路 2.1 查找 '/' 所在位置(第一思路) 2.2 利用python中分数表达Fraction函数 2.2.1 Fraction函数介绍 2.2.2 解题 2.3 类 ...

  6. leetcode 592. Fraction Addition and Subtraction | 592. 分数加减运算(最大公因数gcd,最小公倍数lcm)

    题目 https://leetcode.com/problems/fraction-addition-and-subtraction/ 题解 这题既简单又麻烦,一道 hard 的 easy 题,被划分 ...

  7. JAVA程序设计:分数加减运算(LeetCode:592)

    给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即最简分数. 如果最终结果是一个整数,例如 2,你需要将它转换成分数形式,其分母为 1.所以 ...

  8. LeetCode中等题之分数加减运算

    题目 给定一个表示分数加减运算的字符串 expression ,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即最简分数. 如果最终结果是一个整数,例如 2,你需要将它转换成分数 ...

  9. leetcode_592. 分数加减运算

    问题描述: 给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即最简分数. 如果最终结果是一个整数,例如 2,你需要将它转换成分数形式,其分母 ...

最新文章

  1. 小米游戏本bios_小米游戏本2019款发布:顶配i7-9750H+RTX2060+144Hz
  2. CVPR 2018 《High-speed Tracking with Multi-kernel Correlation Filters》论文笔记
  3. 机器人从计算机应用领域看,人的素质差异,本质地不在于他们即存知识信息量的差异,而在于他们思维能力的差异。( )...
  4. python线性回归算法简介_Python实现的简单线性回归算法实例分析
  5. 闲话杂谈—至曾经的自己
  6. leetcode 721. 账户合并(并查集)
  7. 与时间相关的java源码_Java 基于当前时间获取和计算时间
  8. java游戏猿人时代_学习java编程就业前景如何
  9. ArrayBlockingQueue与LinkedBlockingQueue
  10. Hadoop HIVE 条件控制函数
  11. python撤回快捷键大全_Python 快捷键大全
  12. 计算机格式化的作用,怎样把电脑格式化 电脑格式化方法【图文】
  13. 校学 离散数学主析取合取范式 做题心得
  14. 关于双非本科2020秋招,我想说的
  15. Swift编程二十四(不透明类型)
  16. 智信分销拼团拍卖商城v3.38.6直播商城小程序
  17. JAVA上加密算法的实现用例(转)
  18. 解决Openwrt安装插件提示一下错误的办法
  19. 2020科目一考试口诀_2021年科目一考试口诀
  20. 航天安网高清视频无损压缩解决方案—IDC机房监控系统案例

热门文章

  1. Storm任务提交过程及目录树介绍
  2. Linux: shell 中命令代换 $() 和 ``(有图有代码有真相!!!)
  3. input子系统基础之按键5——按键驱动
  4. linux内核源码目录结构(2.6.35.7版本)
  5. C++远航之封装篇——默认构造函数、初始化列表、拷贝构造函数
  6. 解决模拟MOSS用户调用WebService打开个人站点进行操作
  7. JVM内存溢出时快照转存HeapDump到文件
  8. Leetcode 771. Jewels and Stones
  9. Go语言之进阶篇http服务器获取客户端的一些信息
  10. 关于arguments的用法