Java实现 LeetCode 592 分数加减运算(纯体力活)
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 分数加减运算(纯体力活)相关推荐
- Leetcode 592. 分数加减运算 C++
Leetcode 592. 分数加减运算 题目 给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即最简分数. 如果最终结果是一个整数,例如 ...
- LeetCode 592. 分数加减运算(字符串+最大公约数)
1. 题目 给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即最简分数. 如果最终结果是一个整数,例如 2,你需要将它转换成分数形式,其分母 ...
- 图解LeetCode——592. 分数加减运算(难度:中等)
一.题目 给定一个表示分数加减运算的字符串 expression,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即:最简分数. 如果最终结果是一个整数,例如 2,你需要将它转换成 ...
- LeetCode 0592. 分数加减运算:手把手分步のC++讲解
[LetMeFly]592.分数加减运算:手把手分步のC++讲解 力扣题目链接:https://leetcode.cn/problems/fraction-addition-and-subtracti ...
- 592.分数加减运算 纯纯的数学题,Python 7行代码+详细思路分享!
592.分数加减运算 https://leetcode.cn/problems/fraction-addition-and-subtraction/solution/by-qingfengpython ...
- 【leetcode】592.分数加减运算(python)
目录 一.题目描述 二.解题思路 2.1 查找 '/' 所在位置(第一思路) 2.2 利用python中分数表达Fraction函数 2.2.1 Fraction函数介绍 2.2.2 解题 2.3 类 ...
- leetcode 592. Fraction Addition and Subtraction | 592. 分数加减运算(最大公因数gcd,最小公倍数lcm)
题目 https://leetcode.com/problems/fraction-addition-and-subtraction/ 题解 这题既简单又麻烦,一道 hard 的 easy 题,被划分 ...
- JAVA程序设计:分数加减运算(LeetCode:592)
给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即最简分数. 如果最终结果是一个整数,例如 2,你需要将它转换成分数形式,其分母为 1.所以 ...
- 分数加减运算(java实现)leecode网题目
input:-1/2+1/2+1/3 out:1/3package 每日算法题;import java.util.Arrays;public class 分数加减运算 {public String f ...
- LeetCode中等题之分数加减运算
题目 给定一个表示分数加减运算的字符串 expression ,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即最简分数. 如果最终结果是一个整数,例如 2,你需要将它转换成分数 ...
最新文章
- Golang判断元素是否存在数组中
- Java基础学习笔记三 Java基础语法
- python爬虫消费者与生产者_Condition版生产者与消费者模式
- phpMyAdmin ‘tbl_gis_visualization.php’多个跨站脚本漏洞
- 精品课程教学网站中系统设计如何写
- keras + tensorflow —— 使用预训练模型
- 每天一道剑指offer-丑数
- DES加密算法介绍(含例子)
- 手游内存辅助开发教程
- 入秋的第一篇数据结构算法:看看归并与快排的风采
- Linux文件管理器默认不显示隐藏文件
- Python常见问题 - pip报错 ValueError: Unable to find resource t32.exe in package pip._vendor.distlib
- 徐姗玩赚中国:我用一个月时间做了一个几万粉的dy号,结果被限流了
- “一点”也不能忍 | 精准检测让屏幕缺陷无所遁形
- [转贴]汉武帝太子刘据的悲剧
- element el-table 计算指定列
- Linux内核中的IPSEC实现(3) ---转载
- 【Python】【Java】【面试】【WordPress】【深度学习】【开源软件】| Chat · 预告
- 镜像格式二十年:从 Knoppix 到 OCI-Image-v2
- 读书笔记||函数探幽