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

1. 题目

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

2. 解题

class Solution {
public:string fractionAddition(string expression) {bool positive = true, founddown = false;int up = 0, down = 0, a = 0, b = 0;for(int i = 0; i < expression.size(); ++i){if(expression[i] == '+'){add(up,down,a,b,positive);positive = true;founddown = false;//找到分母a=b=0;}else if(expression[i] == '-'){add(up,down,a,b,positive);positive = false;founddown = false;a=b=0;}else if(expression[i] == '/')founddown = true;else{if(founddown)b = b*10+expression[i]-'0';elsea = a*10+expression[i]-'0';}}add(up,down,a,b,positive);return to_string(up)+"/"+to_string(down);}void add(int &up, int &down, int a, int b, bool positive){if(down == 0 && b == 0)return;if(down == 0 && b != 0){up = positive?a:-a, down = b;return;}int t_up = 0, t_down = down*b;t_up += up*b + (positive?a:-a)*down;//交叉相乘int g = gcd(abs(t_up), t_down);//最大正公约数up = t_up/g;down = t_down/g;}int gcd(int a, int b){int r;while(b){r = a%b;a = b;b = r;}return a;}
};

0 ms 6.3 MB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475552.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

18、Linux下编程风格

在前面曾总结过微软环境下编程的规范【1】&#xff0c;但是在linux下&#xff0c;没有自动补起&#xff0c;以及没有像VS那样高级好用的可视化开发工具&#xff0c;如果变量&#xff0c;函数定义太复杂&#xff0c;敲的也累&#xff0c;下面总结linux下编程风格&#xff0c;资料…

获取数据 - 将Excel文件读入矩阵matrix中 - Python代码

机器学习中&#xff0c;很多算法的计算逻辑是基于数学的&#xff0c;免不了求特征值和特征向量这种事情&#xff0c;因此&#xff0c;在数据预处理的时候&#xff0c;将数据源中的数据转储成矩阵格式是很有必要的。 原数据&#xff1a; 代码&#xff1a; import numpy as np…

LeetCode 713. 乘积小于K的子数组(滑动窗口)

1. 题目 给定一个正整数数组 nums。 找出该数组内乘积小于 k 的连续的子数组的个数。 示例 1: 输入: nums [10,5,2,6], k 100 输出: 8 解释: 8个乘积小于100的子数组分别为: [10], [5], [2], [6], [10,5], [5,2], [2,6], [5,2,6]。 需要注意的是 [10,5,2] 并不是乘积小于…

Visual Studio 2010 调试 C 语言程序

转&#xff1a;http://woyouxian.net/c/using_visual_studio_write_pure_ansi_c_program.html 本篇文章讲述如何用微软的 Visual Studio 编写纯C语言程序&#xff0c;这里的纯C语言&#xff0c;指的是 ANSI C 语言。 要在 Visual Studio 里创建一个 ANSI C语言程序&#xff0c;…

字符串处理 - DataFrame文本数据的量化 - Python代码

在数据建模的过程中&#xff0c;对于文本数据&#xff0c;比如婚姻情况、性别、居住地等。这给只接受数值型的模型造成了很大的干扰&#xff0c;因此在数据采集到数据建模的过程中&#xff0c;我们需要一个过程&#xff0c;叫量化。 比如这样一个源数据&#xff1a; 收入身高…

Silverlight 4之旅(三)数据绑定(中)

在上篇文章中我们已经看过了绑定的基础知识&#xff0c;以及绑定数据源的选择问题。在本篇文章中我们看下绑定时Target的现实的问题。 自定义显示 很多时候我们的DataSource存储的数据并不可以直接用来显示&#xff0c;比如说我们对于Bool类型&#xff0c;需要显示为“是”或则…

LeetCode 第 28 场双周赛(505/2144,前23.6%)

文章目录1. 比赛结果2. 题目1. LeetCode 5420. 商品折扣后的最终价格 easy2. LeetCode 5422. 子矩形查询 medium3. LeetCode 5423. 找两个和为目标值且不重叠的子数组 medium4. LeetCode 5421. 安排邮筒 hard1. 比赛结果 两题选手&#x1f602;&#xff0c;前两题很水&#xf…

决策树模型 - (ID3算法、C4.5算法) - Python代码实现

目录 算法简介 信息熵(Entropy) 信息增益(Information gain) - ID3算法 信息增益率(gain ratio) - C4.5算法 源数据 代码实现 - ID3算法 代码实现 - C4.5算法 画决策树代码-treePlotter 算法简介 决策数(Decision Tree)在机器学习中也是比较常见的一种算法&#xff0c…

SGA介绍

以前一直看的马马虎虎&#xff0c;这次重新整理了下sga设置&#xff0c;组件等。当然这些涉及到了很多的参考&#xff0c;主要的参考的网址&#xff1a;http://www.hellodba.com/reader.php?ID104&langCNhttp://8xmax.blog.163.com/blog/static/1633631020084781125726/ h…

重复值处理 - 清洗 DataFrame 中的各种重复类型 - Python代码

目录 所有列是否完全重复 指定某一列是否重复 根据多列判断是否重复&#xff0c;防止误删数据 其他数据预处理方法 通过八爪鱼或者火车头等采集器从全网抓取的数据中&#xff0c;总会存在各种各样的重复数据&#xff0c;为保证数据在使用过程中的准确性&#xff0c;总要先进…

LeetCode 1480. 一维数组的动态和(前缀和)

1. 题目 给你一个数组 nums 。数组「动态和」的计算公式为&#xff1a;runningSum[i] sum(nums[0]…nums[i]) 。 请返回 nums 的动态和。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,4] 输出&#xff1a;[1,3,6,10] 解释&#xff1a;动态和计算过程为 [1, 12, 123, …

bitmap 转 drawable

BitmapDrawable drawable new BitmapDrawable(bitmap); layout.setBackgroundDrawable(drawable);转载于:https://www.cnblogs.com/sode/archive/2011/08/10/2133799.html

机器学习与建模 - 聚类、分类、回归的区别

一句话概括&#xff1a; 1. 聚类&#xff1a;无监督学习&#xff0c;学习结果将产生几个集合&#xff0c;集合中的元素彼此相似&#xff1b; 2. 分类&#xff1a;有监督学习&#xff0c;学习结果将产生几个函数&#xff0c;通过函数划分为几个集合&#xff0c;数据对象是离散…

LeetCode 1481. 不同整数的最少数目(计数+排序+贪心)

1. 题目 给你一个整数数组 arr 和一个整数 k 。现需要从数组中恰好移除 k 个元素&#xff0c;请找出移除后数组中不同整数的最少数目。 示例 1&#xff1a; 输入&#xff1a;arr [5,5,4], k 1 输出&#xff1a;1 解释&#xff1a;移除 1 个 4 &#xff0c;数组中只剩下 5 一…

Silverlight带关闭动画的内容控件,可移动的内容控件(一)

本例给大家介绍两个自定义控件&#xff0c;一个有显示和关闭两种状态&#xff0c;在状态切换时有动画效果。另外一个是可以拖动的内容控件&#xff0c;可以制作能拖动的面板。 A&#xff0e;带关闭动画的内容控件。 .xaml View Code <ResourceDictionary xmlns"htt…

模型评价 - 判断数据模型拟合效果的三种方法

数据建模的目的就是获得从自变量映射到因变量的函数&#xff0c;在建模的探索过程中&#xff0c;不同的方式总会得出不同的函数模型&#xff0c;而这些函数大多是由一些参数构成的&#xff0c;比如 y f&#xff08; x; w0, w1, w2, w3, ...&#xff09;。 平方损失函数 为了选…

Autodesk云计算系列视频 --- 云计算与Civil 3D

前面的视频介绍了云计算与AutoCAD/Revit/Inventor的结合&#xff0c;这一节是云计算与Civil 3D的结合例子&#xff1a; 演示中使用的云计算程序源代码可以从下面链接下载&#xff1a; The sample code used in the demonstration is available here. 转载于:https://www.cnblo…

模型评价 - 机器学习与建模中怎么克服过拟合问题?

上一篇博客链接&#xff1a; 机器学习与建模中 - 判断数据模型拟合效果的三种方法 在上一篇博客中&#xff0c;我们谈到了使用损失函数来判断模型的拟合效果。但是拟合效果比较好的模型不一定是最好的模型&#xff0c;建模的最终目的是为了预测&#xff0c;因此预测最精准的模…

LeetCode 957. N 天后的牢房(查找循环节)

1. 题目 8 间牢房排成一排&#xff0c;每间牢房不是有人住就是空着。 每天&#xff0c;无论牢房是被占用或空置&#xff0c;都会根据以下规则进行更改&#xff1a; 如果一间牢房的两个相邻的房间都被占用或都是空的&#xff0c;那么该牢房就会被占用。 否则&#xff0c;它就…

获取数据 - 下载附件解压附件 - Python代码

一些线上化刚刚起步的部门&#xff0c;并不是所有的数据都是直接推送到服务器的数据库中&#xff0c;有些数据往往是数据中心通过邮件形式推送的&#xff0c;如果每天接收邮件--下载附件--解压--合并文件--导入数据库&#xff0c;对于数据工程师来说&#xff0c;这无疑是琐碎且…