前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【leetcode刷题】T209-求解方程

【leetcode刷题】T209-求解方程

作者头像
木又AI帮
发布2019-12-12 16:03:39
6080
发布2019-12-12 16:03:39
举报
文章被收录于专栏:木又AI帮木又AI帮

木又连续日更第83天(83/100)


木又的第209篇leetcode解题报告

数学类型第25篇解题报告

leetcode第640题:求解方程

https://leetcode-cn.com/problems/solve-the-equation/


【题目】

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

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

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

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

代码语言:javascript
复制
示例 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等拿到各个系数。

注意的是:

1)x前不一定有系数,那么默认系数为1

2)=前不一定是数字,也有可能是x

3)等号后的系数加入到总数中,需要乘以-1

【代码】

python版本

代码语言:javascript
复制
class Solution(object):
    def solveEquation(self, equation):
        """
        :type equation: str
        :rtype: str
        """
        a = 0
        b = 0
        start = 0
        flag = 1
        for i in range(len(equation)):
            if equation[i] == 'x':
                # 'x'要分为单独的'x'和带系数的'ax'分别处理
                if start == i or (i - start == 1 and equation[start] == '+'):
                    a += flag
                elif i - start == 1 and equation[start] == '-':
                    a -= flag
                else:
                    a += flag * int(equation[start:i])
                start = i + 1
            elif equation[i] == '=':
                # 等号前的数字也要单独处理
                if i > start:
                    b += flag * int(equation[start:i])
                flag = -1
                start = i + 1
            elif equation[i] == '+' or equation[i] == '-':
                # print(equation[start:i])
                # 'x+2'在x后面也有个+,''不能被转换为int
                if i == start:
                    continue
                b += flag * int(equation[start:i])
                start = i
        # 结束要处理
        if start < len(equation):
            b += flag * int(equation[start:])

        if a == 0 and b == 0:
            return "Infinite solutions"
        if a == 0 and b != 0:
            return "No solution"
        return "x=" + str(-b // a)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木又AI帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档