鱼C论坛

 找回密码
 立即注册
查看: 1657|回复: 0

[技术交流] C++刷leetcode(640. 求解方程)【数学】

[复制链接]
发表于 2020-7-27 12:53:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目描述:
求解一个给定的方程,将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"

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/solve-the-equation
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public:
    #define NO "No solution"
    #define INF "Infinite solutions"
    void helper(string equ, int& num, int& cha){
        int sign = 1;
        int k = 0;
        bool is_x = false;
        for(int i = 0; i < equ.size(); i++){
            char temp = equ[i];
            if(temp == '+' || temp == '-'){
                if(is_x == true){
                    cha += sign * k;//注意此处书写
                }else{
                    num += sign * k;//注意此处书写
                }
                sign = temp == '-' ? -1 : 1;
                k = 0;
                is_x = false;
            }else if(temp >= '0'  && temp <= '9'){
                k = k * 10 + temp - '0';
            }else if(temp == 'x'){
                is_x = true;
                if(k == 0 && (i == 0 || equ[i-1] != '0')){//越界情况不存在
                    k = 1;
                }
            }
        }
    }
    string solveEquation(string equation) {
        int store = equation.find('=');
        if(store == -1)return NO;
        int num1 = 0, cha1 = 0;
        int num2 = 0, cha2 = 0;
        helper(equation.substr(0, store) + "+", num1, cha1);
        helper(equation.substr(store+1) + "+", num2, cha2);
        int store1 = num1 - num2;
        int store2 = cha2 - cha1;
        if(store2 == 0){
            return store1 == 0 ? INF : NO;
        }
        return "x=" + to_string(store1 / store2);
    }
};

参考链接:https://leetcode-cn.com/problems ... -shi-huo-qu-chang-/

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-12 05:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表