美文网首页
LeetCode答题记录640. 求解方程

LeetCode答题记录640. 求解方程

作者: 渣新iOS程序员sun某 | 来源:发表于2018-08-08 19:16 被阅读0次

求解一个给定的方程,将x以字符串"x=#value"的形式返回。该方程仅包含'+',' - '操作,变量 x 和其对应系数。
如果方程没有解,请返回“No solution”。
如果方程有无限解,则返回“Infinite solutions”。
如果方程中只有一个解,要保证返回值 x 是一个整数。

解析字符串,按照普通的解方程手法进行

let index:String.Index = equation.index(of: "=")!
    let leftStr = equation[..<index]
    let rightStr = equation[equation.index(after: index)...]
    var leftNum: Int = 0
    var leftX: Int = 0
    var tempStr: String = ""
    for aChar in leftStr {
        if aChar == "x" {
            if tempStr.isEmpty {
                leftX += 1
            }else {
                if tempStr.last == "+" || tempStr.last == "-" {
                    tempStr += "1"
                }
                leftX += Int(tempStr)!
                tempStr = ""
            }
        }else if aChar == "+" || aChar == "-" {
            if !tempStr.isEmpty {
                leftNum += Int(tempStr)!
            }
            tempStr = String(aChar)
        }else {
            tempStr += String(aChar)
        }
    }
    if !tempStr.isEmpty {
        leftNum += Int(tempStr)!
        tempStr = ""
    }
    var rightNum: Int = 0
    var rightX: Int = 0
    for aChar in rightStr {
        if aChar == "x" {
            if tempStr.isEmpty {
                rightX += 1
            }else {
                if tempStr.last == "+" || tempStr.last == "-" {
                    tempStr += "1"
                }
                rightX += Int(tempStr)!
                tempStr = ""
            }
        }else if aChar == "+" || aChar == "-" {
            if !tempStr.isEmpty {
                rightNum += Int(tempStr)!
            }
            tempStr = String(aChar)
        }else {
            tempStr += String(aChar)
        }
    }
    if !tempStr.isEmpty {
        rightNum += Int(tempStr)!
    }
    leftX = leftX - rightX
    rightNum = rightNum - leftNum
    var rstStr = ""
    if leftX == 0 {
        if rightNum == 0 {
            rstStr = "Infinite solutions"
        }else {
            rstStr = "No solution"
        }
    }else {
        let rstNum = Double(rightNum) / Double(leftX)
        var rstInt = Int(rstNum)
        if rstNum < Double(rstInt) {
            rstInt -= 1
        }
        rstStr = "x=\(rstInt)"
    }
    return rstStr

相关文章

  • LeetCode答题记录640. 求解方程

    求解一个给定的方程,将x以字符串"x=#value"的形式返回。该方程仅包含'+',' - '操作,变量 x 和其...

  • 640. 求解方程(Python)

    题目 难度:★★★☆☆类型:数学方法:格式化字符串 力扣链接请移步本题传送门[https://leetcode-c...

  • 8.数学(八)

    题目汇总https://leetcode-cn.com/tag/math/633. 平方数之和简单[✔]640. ...

  • 使用scipy库的root和fsolve函数求解方程

    求解非线性方程 使用scipy库的 root, fsolve 函数求解非线性方程。 求解传热方程(热辐射+热传导)...

  • 2020-01-16

    机器学习概念统计学样本 —— 数据集待求解方程(待求解方程中的未知数为参数) —— 预训练模型求解参数后的N元方程...

  • 第23课 微分方程和exp(At)

    怎么求解一阶方程? 怎么求解一阶导数? 怎么求解常系数线性方程? 将它们转换成线性代数问题的思路是常系数线性方程解...

  • 数学工具

    desmos - 函数图形绘制 方程求解

  • 学子情缘

    记得刚上初二,数学进入方程求解的教学内容,如一元n次方程的求解,二元一次方程组的求解等。一元二次方程有公式法,有因...

  • 二分法

    本次使用二分法求解一个简单的方程的根 方程如下 方程的定义域为[0,1] 编程求解 ``` def bisect(...

  • 用numpy求解方程组

    用numpy求解方程组 线性代数中比较常见的问题之一是求解矩阵向量方程。 这是一个例子。 我们寻找解决方程的向量x...

网友评论

      本文标题:LeetCode答题记录640. 求解方程

      本文链接:https://www.haomeiwen.com/subject/lqoxbftx.html