LeetCode答題記錄592. 分?jǐn)?shù)加減運(yùn)算

給定一個(gè)表示分?jǐn)?shù)加減運(yùn)算表達(dá)式的字符串,你需要返回一個(gè)字符串形式的計(jì)算結(jié)果。 這個(gè)結(jié)果應(yīng)該是不可約分的分?jǐn)?shù),即最簡(jiǎn)分?jǐn)?shù)。 如果最終結(jié)果是一個(gè)整數(shù),例如 2,你需要將它轉(zhuǎn)換成分?jǐn)?shù)形式,其分母為 1。所以在上述例子中, 2 應(yīng)該被轉(zhuǎn)換為 2/1

解法:分子 = a分子b分母 + a分母b分子 ,分母 = a分母 * b分母
然后約分,約分需要用到歐幾里得算法求最大公約數(shù)

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)"
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 專業(yè)考題類型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D選項(xiàng)E選項(xiàng)F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 10,576評(píng)論 0 13
  • 在C語(yǔ)言中,五種基本數(shù)據(jù)類型存儲(chǔ)空間長(zhǎng)度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來(lái)閱讀 4,044評(píng)論 0 2
  • 第一章數(shù)和數(shù)的運(yùn)算 一概念 (一)整數(shù) 1整數(shù)的意義 自然數(shù)和0都是整數(shù)。 2自然數(shù) 我們?cè)跀?shù)物體的時(shí)候,用來(lái)表示...
    meychang閱讀 2,846評(píng)論 0 5
  • 第三章認(rèn)識(shí)分?jǐn)?shù)掌握互化 根據(jù)性質(zhì)約分通分 在實(shí)際生產(chǎn)和生活中,人們?cè)谶M(jìn)行測(cè)量和計(jì)算的時(shí)候,往往得不到整數(shù)的結(jié)果,這...
    宏昌居士123閱讀 1,618評(píng)論 1 7
  • 【1】7,9,-1,5,( ) A、4;B、2;C、-1;D、-3 分析:選D,7+9=16;9+(-1)=8;(...
    Alex_bingo閱讀 19,808評(píng)論 1 19

友情鏈接更多精彩內(nèi)容