当前位置:网站首页>【640. Solving Equations】
【640. Solving Equations】
2022-08-10 22:36:00 【[email protected]】
来源:力扣(LeetCode)
描述:
求解一个给定的方程,将 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 只有一个 ‘=’.
- equation 方程由整数组成,其绝对值在 [0, 100] 范围内,不含前导零和变量 ‘x’
方法:解析

代码:
class Solution {
public:
string solveEquation(string equation) {
int factor = 0, val = 0;
int index = 0, n = equation.size(), sign1 = 1; // The default coefficient on the left side of the equation is positive
while (index < n) {
if (equation[index] == '=') {
sign1 = -1; // The default coefficient on the right-hand side of the equation is negative
index++;
continue;
}
int sign2 = sign1, number = 0;
bool valid = false; // 记录 number 是否有效
if (equation[index] == '-' || equation[index] == '+') {
// 去掉前面的符号
sign2 = (equation[index] == '-') ? -sign1 : sign1;
index++;
}
while (index < n && isdigit(equation[index])) {
number = number * 10 + (equation[index] - '0');
index++;
valid = true;
}
if (index < n && equation[index] == 'x') {
// 变量
factor += valid ? sign2 * number : sign2;
index++;
} else {
// 数值
val += sign2 * number;
}
}
if (factor == 0) {
return val == 0 ? "Infinite solutions" : "No solution";
}
return string("x=") + to_string(-val / factor);
}
};
执行用时:0 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗:5.9 MB, 在所有 C++ 提交中击败了83.55%的用户
复杂度分析
时间复杂度: O(n),其中 n 是字符串 equation 的长度.
空间复杂度: O(1).
author:LeetCode-Solution
版权声明
本文为[[email protected]]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/222/202208102149022968.html
边栏推荐
猜你喜欢

Thread State 详解

mmpose关键点(一):评价指标(PCK,OKS,mAP)

QT笔记——vs + qt 创建一个带界面的 dll 和 调用带界面的dll

一篇文章教你Pytest快速入门和基础讲解,一定要看

Common interview questions for APP UI automation testing, maybe useful~

Addition of linked lists (2)

Shell programming specification and variables

阿里云贾朝辉:云XR平台支持彼真科技呈现国风科幻虚拟演唱会

威纶通触摸屏如何在报警的同时,显示出异常数据的当前值?

These must-know JVM knowledge, I have sorted it out with a mind map
随机推荐
STL-deque
ThreadLocal comprehensive analysis (1)
配电网络扩展规划:考虑使用概率性能源生产和消费概况的决策(Matlab代码实现)
Why general company will say "go back messages such as" after the end of the interview, rather than just tell the interviewer the result?
使用 Cloudreve 搭建私有云盘
Shell programming specification and variables
shell脚本循环语句for、while语句
geemap的详细安装步骤及环境配置
shell programming without interaction
翻译科技论文,俄译中怎样效果好
自组织是管理者和成员的双向奔赴
RK3399平台开发系列讲解(内核驱动外设篇)6.35、IAM20680陀螺仪介绍
Labelme-5.0.1 version edit polygon crash
关于 DataFrame: 处理时间
How to translate financial annual report, why choose a professional translation company?
Extended Chinese Remainder Theorem
华为HCIE云计算之Fusion Access桌面云
virtual address space
服务——DNS正向反向域名解析服务
file IO-buffer