码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【LeetCode】640. 求解方程


    题目

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

    示例 1:

    输入: equation = “x+5-3+x=6+x-2”
    输出: “x=2”

    示例 2:

    输入: equation = “x=x”
    输出: “Infinite solutions”

    示例 3:

    输入: equation = “2x=x”
    输出: “x=0”

    提示:

    3 <= equation.length <= 1000
    equation 只有一个 ‘=’.
    方程由绝对值在 [0, 100] 范围内且无任何前导零的整数和变量 ‘x’ 组成。

    题解

    逐个遍历处理
    等号右边的可以看作移到左边,即+变 - ,- 变 +
    还要注意x的系数的处理

    class Solution {
    public:
        string solveEquation(string equation) {
            int x = 0;//x系数
            int sign = 1;//符号
            int sum = 0;//常数和
            int len = equation.length();
            int leftOrright = 1;//等式左or右
    
            for(int i=0;i<len;i++)
            {
                if(equation[i] == '+')
                {
                    sign = 1;
                }
                else if(equation[i] == '-')
                {
                    sign = -1;
                }
                else if(equation[i] == '=')
                {
                    sign = 1;
                    leftOrright = -1;
                }
                else
                {
                    int num = 0;
                    bool flag = false;//标志是否遇到了整数,没遇到的话就代表只遇到了x,这时要单独处理
                    
                    //获取遇到的整数值
                    while(i<len && isdigit(equation[i]))
                    {
                        num = num*10+equation[i++]-'0';
                        flag = true;
                    }
                    
                    num = num*sign*leftOrright;//加符号
    
                    if(equation[i]=='x')
                    {
                        if(flag)
                            x += num;
                        else
                            x += 1*sign*leftOrright;
                    }
                    else
                    {
                        sum += num;
                        i--;
                    }
                }
            }
    
            if(x!=0)
                return "x="+to_string(-sum/x);
            else
                return sum==0 ? "Infinite solutions" : "No solution";
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
  • 相关阅读:
    【C语言】冒泡排序升级版---适用任意类型
    R语言贝叶斯非参数模型:密度估计、非参数化随机效应META分析心肌梗死数据...
    做产品经理需要很高的学历吗?真相来咯!
    Unity可视化Shader工具ASE介绍——5、ASE快捷键和常用节点介绍
    混乱的代码是技术债吗
    这才是老板爱看的人力资源分析报表,你只是在做“流水账”!
    (Matalb分类预测)PSO-BP粒子群算法优化BP神经网络的多维分类预测
    MFC编辑框控件属性和用法
    MOCO----Momentum Contrast
    Python数据分析(四)-- 操作Excel文件
  • 原文地址:https://blog.csdn.net/qq_45972928/article/details/126305212
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号