LeetCode答题记录592. 分数加减运算

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

解法:分子 = a分子b分母 + a分母b分子 ,分母 = a分母 * b分母
然后约分,约分需要用到欧几里得算法求最大公约数

func gcd(_ a:Int ,_ b:Int) -> Int {
    var inA = a,inB = b
    if a > b {
        inA = b
        inB = a
    }
    while inA != 0 {
        let temp = inA
        inA = inB % inA
        inB = temp
    }
    return abs(inB)
}
func fractionAddition(_ expression: String) -> String {
    
    var n: Int = 0,d: Int = 1
    var startIndex = expression.startIndex
    while startIndex < expression.endIndex {
        var leftIndex = startIndex
        repeat {
            leftIndex = expression.index(after: leftIndex)
        }while (expression[leftIndex] != "/");
        let range = expression[startIndex..<leftIndex]
        let fenzi:Int = Int(String(range))!
        var rightIndex = expression.index(after: leftIndex)
        while (rightIndex < expression.endIndex && expression[rightIndex] != "+" && expression[rightIndex] != "-") {
            rightIndex = expression.index(after: rightIndex)
        }
        let range2 = expression[expression.index(after: leftIndex)..<rightIndex]
        let fenmu:Int = Int(String(range2))!
        n = n*fenmu + fenzi*d
        d = d * fenmu
        let gcd = self.gcd(n, d)
        n = n / gcd
        d = d / gcd
        startIndex = rightIndex
    }
    return "\(n)/\(d)"
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 11,102评论 0赞 13
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 4,202评论 0赞 2
  • 第一章数和数的运算 一概念 (一)整数 1整数的意义 自然数和0都是整数。 2自然数 我们在数物体的时候,用来表示...
    meychang阅读 2,913评论 0赞 5
  • 第三章认识分数掌握互化 根据性质约分通分 在实际生产和生活中,人们在进行测量和计算的时候,往往得不到整数的结果,这...
    宏昌居士123阅读 1,658评论 1赞 7
  • 【1】7,9,-1,5,( ) A、4;B、2;C、-1;D、-3 分析:选D,7+9=16;9+(-1)=8;(...
    Alex_bingo阅读 20,081评论 1赞 19

友情链接更多精彩内容