问题描述:

给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果。 这个结果应该是不可约分的分数,即最简分数。 如果最终结果是一个整数,例如 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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


解决方案:

公约数通分

class Solution {public String fractionAddition(String expression) {Scanner sc = new Scanner(expression).useDelimiter("/|(?=[-+])");int A = 0;int B = 1;while (sc.hasNext()) {int a = sc.nextInt();int b = sc.nextInt();A = A * b + B * a;B = b * B;int g = gcd(A, B);A /= g;B /= g;}return A + "/" + B;}int gcd(int x, int y) {return (y!=0?gcd(y,x%y):Math.abs(x));}}

公约数的两种求法:

int gcd(int a,int b)
{if(a==b)return a;if(a>b)return gcd(a-b,b);if(a<b)return gcd(b-a,a);
}
int gcd(int a,int b)
{if(b==0)return a;elsereturn gcd(b,a%b);
}

减法效率高,但是次数多,可能栈溢出

取模效率低,但次数少

leetcode_592. 分数加减运算相关推荐

  1. 【数据结构与算法】之深入解析“分数加减运算”的求解思路与算法示例

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

  2. LeetCode 592. 分数加减运算(字符串+最大公约数)

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

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

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

  4. 分数加减运算(java实现)leecode网题目

    input:-1/2+1/2+1/3 out:1/3package 每日算法题;import java.util.Arrays;public class 分数加减运算 {public String f ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. Semaphore(信号量)
  2. 独家 | 教你使用torchlayers 来构建PyTorch 模型(附链接)
  3. MySQL数据库root账户密码忘记两种处理方法转载
  4. LeetCode12- 整数转罗马数字
  5. 【mysql优化专题】本专题终极总结(共12篇)
  6. html整个项目怎么导出来,怎样将jquery导入web项目中?
  7. C 为什么非要引入那几种类型转换?
  8. Threejs性能监视和可视化控制
  9. 交叉编译及linux简单程序设计,嵌入式实验6交叉编译及Linux简单程序设计实验
  10. 字符串的经典hash算法
  11. linux脚本转win7脚本,使用一个脚本让Ubuntu“变身”Windows7
  12. 快闪族 - 百度百科
  13. OAI LTE系统搭建 -- OAI EPC
  14. 测评EasyRecovery的数据恢复效果与多种功能
  15. oracle dataaccess component,Oracle Data Access Components (ODAC)
  16. 慢就是快的人生哲理_非常精辟的人生哲理句子,句句经典睿智,不管多忙都要看看!...
  17. iOS 动画(基于Lottie封装)
  18. 史上第一张黑洞真身照片终于问世——原来黑洞不是黑的...
  19. 秦绪文:打造自己个人品牌文案
  20. 拓展编辑器(十八)_源生自定义菜单

热门文章

  1. 取之盈:html网页音乐代码大全
  2. ccf-csp 2015春季真题题解
  3. java游戏oppo飞鹰计划,高德发布打假平台“飞鹰计划”,首批接入200多个品牌
  4. maters鸿蒙系统,【华为MateRS保时捷版评测】系统:多元素化集合EMUI 8.1体验很棒-中关村在线...
  5. 用thinkpad连接无线网时,提示“无法连接到网络”
  6. MPII数据集下载缓慢
  7. 08.env和set命令详解
  8. latex figure table htpb
  9. Cocos Creator | 挤水果小游戏实现 ( 二 )
  10. 凡人无法打开的文件9