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.分数加减运算
分数加减运算 给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即最简分数. 如果最终结果是一个整数,例如 2,你需要将它转换成分数形式,其分 ...
- [Swift]LeetCode592. 分数加减运算 | Fraction Addition and Subtraction
Given a string representing an expression of fraction addition and subtraction, you need to return t ...
- JAVA日期加减运算
1.用java.util.Calender来实现 Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()) ...
- velocity加减运算注意格式 ,加减号的左右都要有空格
velocity加减运算注意格式 ,加减号的左右都要有空格 #set( $left= $!biz.value - $vMUtils.getReturnMoney($!biz.billBuy) )
- C语言中指针变量的加减运算
1.指针变量中存放的是地址值,也就是一个数字地址,例如某指针变量中的值是0x20000000,表示表示此指针变量存放的是内存中位于0x20000000地方的内存地址.指针变量可以加减,但是只能与整型数 ...
- 大整数加减运算的C语言实现
目录 大整数加减运算的C语言实现 一. 问题提出 二. 代码实现 三. 效果验证 大整数加减运算的C语言实现 标签: 大整数加减 C 一. 问题提出 培训老师给出一个题目:用C语言实现一个大整数计算器 ...
- Linux中日期的加减运算
Linux中日期的加减运算 目录 在显示方面 在设定时间方面 时间的加减 正文 date命令本身提供了日期的加减运算. date 可以用来显示或设定系统的日期与时间. 回到顶部 在显示方面 使用者可以 ...
- void *指针的加减运算
1.手工写了一个程序验证void *指针加减运算移动几个字节: //本程序验证空类型指针减1移动几个字节 #include <stdio.h> int main(int argc, cha ...
- C语言中指针的加减运算
参考文章,值得一看 char arr[3]; printf("arr:\n%d\n%d\n%d\n", arr, arr + 1, arr + 2); char *parr[3]; ...
随机推荐
- node.js开发指南系列(1)partial is not defined
ejs视图引擎中使用partial函数: <ul><%- partial('listitem', items) %></ul> 报错:partial is not ...
- 转载-git使用之忽略不需要上传的文件的几种方式
在我们使用git 的时候通常会遇到一些问题,一些文件我创建了但是我并不想上传或者有些文件我修改了但是并不想上传(为了适应个自己的开发环境),但是在每次git status的时候总能看到它,不仅感到很心 ...
- Jmeter-Throughput Controller 吞吐量控制器
比如在压测是时候,我设置了100个线程组,循环2次,那么我想根据吞吐量进行并发请求,这时候可以用到这个吞吐量控制器 PercentExecutions:按执行次数的百分比来计算执行次数,Through ...
- javaWeb手动分页步骤
一:编写实体类@Setter@Getter@ToString@Entity@Repositorypublic class PageBean<T> { private Integer cur ...
- python控制台实现打印带颜色的字体
控制台颜色分类: 数值表示的参数含义: 显示方式: 0(默认值).1(高亮).22(非粗体).4(下划线).24(非下划线). 5(闪烁).25(非闪烁).7(反显).27(非反显)前景色: 30(黑 ...
- pt-summary pt-mysql-summary工具
2个percona的工具还真挺好用的. pt-summary# Percona Toolkit System Summary Report ###################### Date | ...
- vue登录路由验证(转)
转载自:https://blog.csdn.net/github_39088222/article/details/80749219 vue的项目的登录状态(如果用vuex状态管理,页面一刷新vuex ...
- node的buffer模块
Buffer这块很早前就想留一篇笔记.前端JS处理buffer的场景其实并不多,虽然后来基于webGL与显卡通信的需求增加了二进制数组,但毕竟相对小众. Buffer的含义是,在数据传输时用内存中的一 ...
- noi7219 复杂的整数划分问题
noi7219 复杂的整数划分问题 #include <bits/stdc++.h> using namespace std; ; int dp1[maxn][maxn], dp2[max ...
- create-react-app ios8系统中页面空白/样式错乱问题
1. 空白问题 因为缺少polyfill 在public/index.html 中引入如下js <script src="https://cdnjs.cloudflare.com/aj ...