592. 分数加减运算

给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果。 这个结果应该是不可约分的分数,即最简分数。 如果最终结果是一个整数,例如 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 位整数范围内的有效整数。

PS:
体力活

class Solution {class Frac {int x, y;Frac(int x, int y) {if (y < 0) {x *= -1;y = -y;}this.x = x;this.y = y;}}long gcd(long a, long b) {while (a % b != 0) {long temp = a % b;a = b;b = temp;}return b;}Frac add(Frac a, Frac b) {long y = (long) a.y * b.y;long x1 = (long) a.x * b.y;long x2 = (long) b.x * a.y;long x = x1 + x2;long g = gcd(x, y);return new Frac((int) (x / g), (int) (y / g));}int index;int readNum(char a[]) {int op = 1;if (a[index] == '+') {index++;} else if (a[index] == '-') {index++;op = -1;}int num = 0;while (index < a.length && (a[index] >= '0' && a[index] <= '9')) {num = num * 10 + (a[index] - '0');index++;}return op*num;}public String fractionAddition(String expression) {char[] a = expression.toCharArray();index = 0;Frac cur = null;while (index < a.length) {int x = readNum(a);index++;int y = readNum(a);//System.out.println("read: "+ x+" "+ y);Frac f = new Frac(x, y);if (cur == null) {cur = f;} else {cur = add(cur, f);}}StringBuilder ans = new StringBuilder();if (cur.x < 0) {ans.append("-");cur.x = -cur.x;}ans.append(cur.x);ans.append("/");ans.append(cur.y);return ans.toString();}
}

Java实现 LeetCode 592 分数加减运算(纯体力活)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. Golang判断元素是否存在数组中
  2. Java基础学习笔记三 Java基础语法
  3. python爬虫消费者与生产者_Condition版生产者与消费者模式
  4. phpMyAdmin ‘tbl_gis_visualization.php’多个跨站脚本漏洞
  5. 精品课程教学网站中系统设计如何写
  6. keras + tensorflow —— 使用预训练模型
  7. 每天一道剑指offer-丑数
  8. DES加密算法介绍(含例子)
  9. 手游内存辅助开发教程
  10. 入秋的第一篇数据结构算法:看看归并与快排的风采
  11. Linux文件管理器默认不显示隐藏文件
  12. Python常见问题 - pip报错 ValueError: Unable to find resource t32.exe in package pip._vendor.distlib
  13. 徐姗玩赚中国:我用一个月时间做了一个几万粉的dy号,结果被限流了
  14. “一点”也不能忍 | 精准检测让屏幕缺陷无所遁形
  15. [转贴]汉武帝太子刘据的悲剧
  16. element el-table 计算指定列
  17. Linux内核中的IPSEC实现(3) ---转载
  18. 【Python】【Java】【面试】【WordPress】【深度学习】【开源软件】| Chat · 预告
  19. 镜像格式二十年:从 Knoppix 到 OCI-Image-v2
  20. 读书笔记||函数探幽

热门文章

  1. cavas的验证码效果demo
  2. 吴伯凡-认知方法论-如何做到真正的反思
  3. 2021牛客多校10F Train Wreck (贪心,思维题)
  4. 目标追踪(二) 滤波初识
  5. usb摄像头android录像软件,USB摄像头app
  6. android中生成 PDF,Android PDF生成
  7. 理财笔记 - 关于沪深300指数基金
  8. isp邮件服务器是什么,与ISP企业邮箱共建邮件服务器
  9. Gsensor/Gyro数据滤波算法思考
  10. JavaFX桌面应用开发-Scene(场景)