美文网首页
640. 求解方程(Python)

640. 求解方程(Python)

作者: 玖月晴 | 来源:发表于2020-11-20 10:24 被阅读0次

题目

难度:★★★☆☆
类型:数学
方法:格式化字符串

力扣链接请移步本题传送门
更多力扣中等题的解决方案请移步力扣中等题目录

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

如果方程没有解,请返回“No solution”。

如果方程有无限解,则返回“Infinite solutions”。

如果方程中只有一个解,要保证返回值 x 是一个整数。

示例 1:

输入: "x+5-3+x=6+x-2"
输出: "x=2"

示例 2:

输入: "x=x"
输出: "Infinite solutions"

示例 3:

输入: "2x=x"
输出: "x=0"

示例 4:

输入: "2x+3x-6x=x+2"
输出: "x=-1"

示例 5:

输入: "x=x+2"
输出: "No solution"

解答

这又是一道小学数学题,一元一次方程的求解,这是算法是用来解决实际问题的一个体现。

思路很简单,这里需要注意几点:

第一,为了让计算机能够便于处理,需要将字符串进行一些格式化,例如本例中,增补系数,将“+x”替换为“+1x”,增补符号,将“-”替换为“-+”,以及增补首项的正号等。

第二,分类的表达,用正负号代表移项后的结果,将一次项和常数项进行归并。

第三,结果的分类处理,如果计算得到一次项系数和常数项为零,说明所有项全部约去,无限多解,如果一次项系数为零而常数项系数不为零,等号不成立,无解。

class Solution(object):
    def solveEquation(self, equation):
        e = equation.replace('-x', '-1x').replace("-", "+-")        # 一些初步的替换
        x_coefficient, constant = 0, 0                              # 初始化一次项系数和常数项
        for i, expression in enumerate(e.split('=')):               # 拆分左右表达式
            if not expression.startswith('+'):                      # 格式化
                expression = '+'+expression
            expression = expression.replace('+x', '+1x')
            for t in expression.split('+'):                         # 拆分各项
                if len(t) > 0:                                      # 遇到有效项
                    if 'x' in t:                                    # 该项是一次项
                        x_coefficient += int(t.strip('x')) if i == 0 else -int(t.strip('x'))
                    else:                                           # 该项是常数项
                        constant += int(t) if i == 0 else -int(t)
        if x_coefficient != 0:
            return 'x={}'.format(str(-constant//x_coefficient))
        if constant == 0:
            return "Infinite solutions"
        return "No solution"

如有疑问或建议,欢迎评论区留言~

有关更多力扣中等题的python解决方案,请移步力扣中等题解析

相关文章

  • 640. 求解方程(Python)

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

  • python方程求解

    [Pythonによる科学・技術計算] 方程式の解を求める 解析解 sympy如果没有sympy,先安装:pip i...

  • 使用Python+SymPy 求解线性方程组

    最近几天在复习线性代数,想用Python求解线性方程组,最开始想用SciPy,但是SciPy求解方程组好像要求系数...

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

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

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

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

  • 你学高数了吗?我是焦头烂额!Python居然能解决高数问题?

    本文将学习Python的Sympy库,通过该库来求极限,微分,定积分与不定积分,常微分方程、偏微分方程。 求解方程...

  • 2020-01-16

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

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

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

  • 数学工具

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

  • 学子情缘

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

网友评论

      本文标题:640. 求解方程(Python)

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