leetcode592
- public class Solution {
- private int GCD(int a, int b)
- {
- return b != ? GCD(b, a % b) : a;
- }
- private int LCM(int a, int b)
- {
- return a * b / GCD(a, b);
- }
- public string FractionAddition(string expression)
- {
- var first = expression[];
- var FU = true;//默认当前表达式为负
- if (first != '-')
- {
- FU = false;//当前表达式为正
- }
- var listPOS = new List<string>();//记录正表达式
- var listNev = new List<string>();//记录负表达式
- //先将正表达式和负表达式分开
- var sb = new StringBuilder();//记录当前表达式
- for (int i = ; i < expression.Length; i++)
- {
- if (expression[i] == '-')
- {
- if (FU)
- {
- if (sb.Length > )
- {
- listNev.Add(sb.ToString());
- }
- }
- else
- {
- if (sb.Length > )
- {
- listPOS.Add(sb.ToString());
- }
- }
- FU = true;
- sb.Clear();
- }
- else if (expression[i] == '+')
- {
- if (FU)
- {
- if (sb.Length > )
- {
- listNev.Add(sb.ToString());
- }
- }
- else
- {
- if (sb.Length > )
- {
- listPOS.Add(sb.ToString());
- }
- }
- FU = false;
- sb.Clear();
- }
- else
- {
- sb.Append(expression[i]);
- }
- }
- if (FU)
- {
- if (sb.Length > )
- {
- listNev.Add(sb.ToString());
- }
- }
- else
- {
- if (sb.Length > )
- {
- listPOS.Add(sb.ToString());
- }
- }
- var listPOSSP = new List<List<int>>();
- foreach (var str in listPOS)
- {
- var ary = str.Split('/');
- var tp = new List<int>();
- tp.Add(int.Parse(ary[]));
- tp.Add(int.Parse(ary[]));
- listPOSSP.Add(tp);
- }
- var listNEVSP = new List<List<int>>();
- foreach (var str in listNev)
- {
- var ary = str.Split('/');
- var tp = new List<int>();
- tp.Add(int.Parse(ary[]));
- tp.Add(int.Parse(ary[]));
- listNEVSP.Add(tp);
- }
- var lcm1 = ;
- var sumPOS = ;
- if (listPOSSP.Any())
- {
- if (listPOSSP.Count == )
- {
- lcm1 = listPOSSP[][];
- }
- else
- {
- lcm1 = listPOSSP[][];
- for (int i = ; i < listPOSSP.Count; i++)
- {
- var curFM = listPOSSP[i][];
- lcm1 = LCM(lcm1, curFM);
- }
- }
- for (int i = ; i < listPOSSP.Count; i++)
- {
- var FM = listPOSSP[i][];
- var FZ = listPOSSP[i][];
- var bs = lcm1 / FM;
- FZ = FZ * bs;
- sumPOS += FZ;
- }
- }
- var lcm2 = ;
- var sumNEV = ;
- if (listNEVSP.Any())
- {
- if (listNEVSP.Count == )
- {
- lcm2 = listNEVSP[][];
- }
- else
- {
- lcm2 = listNEVSP[][];
- for (int i = ; i < listNEVSP.Count; i++)
- {
- var curFM = listNEVSP[i][];
- lcm2 = LCM(lcm2, curFM);
- }
- }
- for (int i = ; i < listNEVSP.Count; i++)
- {
- var FM = listNEVSP[i][];
- var FZ = listNEVSP[i][];
- var bs = lcm2 / FM;
- FZ = FZ * bs;
- sumNEV += FZ;
- }
- }
- var lcm = LCM(lcm1, lcm2);
- var bs1 = lcm / lcm1;
- var bs2 = lcm / lcm2;
- var fz1 = sumPOS * bs1;
- var fz2 = sumNEV * bs2;
- var fz = fz1 - fz2;
- var cc = GCD(fz, lcm);
- if (cc < )
- {
- cc = cc * -;
- }
- var result = fz / cc + "/" + lcm / cc;
- return result;
- }
- }
https://leetcode.com/problems/fraction-addition-and-subtraction/#/description
leetcode592的更多相关文章
- [Swift]LeetCode592. 分数加减运算 | Fraction Addition and Subtraction
Given a string representing an expression of fraction addition and subtraction, you need to return t ...
随机推荐
- mysql-debug: Thread stack overrun
bug info 报错信息: java.sql.SQLException: Thread stack overrun: 5456 bytes used of a 131072 byte stack, ...
- MongoDB 可视化管理工具 MongoCola-1.1.0 测试版发布
首先,感谢大家对于本工具的支持. 经过一周的努力,最新版的工具测试版出炉了,这个版本是一个很重要的版本. 为什么说这个版本重要?以前的工具,只支持一个视图窗口,也就是说了,一次只能看一个数据集的数据. ...
- LeetCode OJ:Integer to Roman(转换整数到罗马字符)
Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...
- Java丨简单的登录过滤器实现方法
过滤过滤,实际就是把需要和不需要的东西分开! 今天来说道说道我们程序中的‘登录过滤器’ ,首先我们看看一下面的问题: 1.“登录过滤器”是干什么用的? 1)“登录过滤器”就是为了防止在用户没有登录的情 ...
- android 删除SD卡或者手机的缓存图片和目录
public static final String TEMP_PHOTO_FILE_NAME = "temp_photo.jpg"; private static String ...
- 10.Linux网卡的配置及详解
1.网卡配置文件在/etc/sysconfig/network-scripts/下: [root@oldboy network-scripts]# ls /etc/sysconfig/network- ...
- 哈工大同义词词林 python 使用范例
哈工大的同义词词林,应该是上个世纪的产物,里面的词比较老旧,但好歹也能用 同义词词林的作用,跟word2vec的获取相近词函数比较类似,这两者发挥的功效比较,看具体的应用吧 1. 首先下载包含同义词的 ...
- (二)java环境搭建
Java运行环境的搭建: 什么是JRE,什么是JDK? JRE:(java运行环境)包括jvm(java虚拟机)和java运行的核心类库,如果只是运行java程序,只需安装JRE JDK:(java开 ...
- (八)js函数二
1.变量 a)局部变量:在所有函数内部定义的变量,或者在函数内部未使用var声明的变量也属于全局变量. b)全局变量:在所有函数外部定义的变量. eg: 1) var a = 5,b = 4, ...
- 【MFC】断言(ASSERT)的用法
摘自:Moondark http://www.cnblogs.com/moondark/archive/2012/03/12/2392315.html 断言(ASSERT)的用法 我一直以为as ...