力扣题:数字与字符串间转换-12.16

力扣题-12.16

[力扣刷题攻略] Re:从零开始的力扣刷题生活

力扣题1:640. 求解方程

解题思想:首先将方程按照“=”进行划分,然后分别记录x的因数和常数项,最后进行返回的判断即可

在这里插入图片描述

class Solution(object):def solveEquation(self, equation):""":type equation: str:rtype: str"""number = 0factor = 0temp = equation.split("=")left = temp[0]right = temp[1]left = left.replace('-', '+-')left = left.split("+")print(left)for i in range(len(left)):if left[i]!='':temp_number = 0temp_factor = 0if left[i] =='x':temp_factor = 1elif left[i][-1] =='x':if left[i][:-1] =='-':temp_factor = -1else:temp_factor = int(left[i][:-1]) else:temp_number = int(left[i])factor = factor+temp_factornumber = number+temp_numberright = right.replace('-', '+-')right = right.split("+")for i in range(len(right)):if right[i]!='':temp_number = 0temp_factor = 0if right[i] =='x':temp_factor = -1elif right[i][-1] =='x':if right[i][:-1] =='-':temp_factor = 1else:temp_factor = int(right[i][:-1]) *-1else:temp_number = int(right[i])*-1factor = factor+temp_factornumber = number+temp_numberif factor ==0 and number==0:return "Infinite solutions"elif factor ==0:return "No solution"else:return "x="+str(number/factor*-1)
class Solution {
public:string solveEquation(string equation) {int number = 0;int factor = 0;std::vector<std::string> temp = splitEquation(equation, '=');std::string left = temp[0];std::string right = temp[1];left = replace_minus_with_plus_dash(left);std::vector<std::string> leftTokens = splitExpression(left, '+');processTokens(leftTokens, number, factor);right = replace_minus_with_plus_dash(right);std::vector<std::string> rightTokens = splitExpression(right, '+');processTokens(rightTokens, number, factor, true);if (factor == 0 && number == 0) {return "Infinite solutions";} else if (factor == 0) {return "No solution";} else {return "x=" + std::to_string(-number / factor);}}private:std::vector<std::string> splitEquation(std::string str, char delimiter) {std::vector<std::string> result;size_t pos = str.find(delimiter);result.push_back(str.substr(0, pos));result.push_back(str.substr(pos + 1));return result;}std::string replace_minus_with_plus_dash(std::string str) {size_t found = str.find("-");while (found != std::string::npos) {str.replace(found, 1, "+-");found = str.find("-", found + 2);}return str;}std::vector<std::string> splitExpression(std::string str, char delimiter) {std::vector<std::string> result;size_t pos = 0;while ((pos = str.find(delimiter)) != std::string::npos) {result.push_back(str.substr(0, pos));str.erase(0, pos + 1);}result.push_back(str);return result;}void processTokens(const std::vector<std::string>& tokens, int& number, int& factor, bool isRight = false) {int multiplier = isRight ? -1 : 1;for (size_t i = 0; i < tokens.size(); ++i) {if (!tokens[i].empty()) {int temp_number = 0;int temp_factor = 0;if (tokens[i] == "x") {temp_factor = 1 * multiplier;} else if(tokens[i] == "-x"){temp_factor = -1 * multiplier;}else if (tokens[i].back() == 'x') {temp_factor = std::stoi(tokens[i].substr(0, tokens[i].size() - 1)) * multiplier;} else {temp_number = std::stoi(tokens[i]) * multiplier;}factor += temp_factor;number += temp_number;}}}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/279286.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

玩转大数据18:大规模数据处理与分布式任务调度

引言 在数字化时代&#xff0c;数据成为了一种宝贵的资源&#xff0c;对于企业和组织来说&#xff0c;如何有效地处理和分析这些数据成为了关键的竞争力。大规模数据处理与分布式任务调度作为大数据处理的核心技术&#xff0c;为解决这一问题提供了有效的解决方案。 随着数据…

杰发科技AC7840——CAN通信简介(1)

简介 7840支持4路CAN-FD Demo调试 官网下载demo&#xff0c;烧录&#xff0c;打开串口发现打印如下。原因是没有连接CAN盒子&#xff0c;总线错误。 CAN收发器端波形 CAN_L有信号&#xff0c;CAN_H没有 波形放大 GPIO端波形 有持续波形输出 波形放大查看&#xff0c;有50U…

驱动框架之_gpio_and_pinctrl-设备树的修改

1&#xff1a;设置设备树中的信息 安装“ Pins_Tool_for_i.MX_Processors_v6_x64.exe ”后运行&#xff0c;打开 IMX6ULL 的配置文件“ MCIMX6Y2xxx08.mex ”&#xff0c;就可以在 GUI 界面中选择引脚&#xff0c; 配置它的功能&#xff0c;这就可以自动生成 Pinctrl 的子节…

算法:快速幂ksm

为什么使用快速幂&#xff1a; 假设题目要求求a的b次方。 c/c里并没有^运算符&#xff0c;所以我们第一时间可能想到使用for循环&#xff0c;将“a * a”语句循环b次。但是这样时间复杂度为O(n),所以当b过大的时候&#xff0c;我们的程序将会非常慢&#xff0c;所以我们需要使用…

Spark RDD、DataFrame、DataSet比较

在Spark的学习当中&#xff0c;RDD、DataFrame、DataSet可以说都是需要着重理解的专业名词概念。尤其是在涉及到数据结构的部分&#xff0c;理解清楚这三者的共性与区别&#xff0c;非常有必要。 RDD&#xff0c;作为Spark的核心数据抽象&#xff0c;是Spark当中不可或缺的存在…

synchronized关键字的使用和原理

synchronized关键字的使用和原理 synchronized&#xff1a;对象锁&#xff0c;保证了临界区内代码的原子性&#xff0c;采用互斥的方式让同一时刻至多只有一个线程能持有对象锁&#xff0c;其它线程获取这个对象锁时会阻塞&#xff0c;保证拥有锁的线程可以安全的执行临界区内…

【SpringBoot篇】Interceptor拦截器 | 拦截器和过滤器的区别

文章目录 &#x1f339;概念⭐作用 &#x1f384;快速入门⭐入门案例代码实现 &#x1f6f8;拦截路径&#x1f354;拦截器interceptor和过滤器filter的区别&#x1f386;登录校验 &#x1f339;概念 拦截器&#xff08;Interceptor&#xff09;是一种软件设计模式&#xff0c;…

【NSX-T】10. 搭建NSX-T环境 —— 使用 BGP 配置 Tier-0 网关

目录 10.1 创建上行链路网段10.2 创建 Tier-0 网关&#xff08;1&#xff09;设置 Interface 信息&#xff08;2&#xff09;设置 BGP添加 BGP 邻居 &#xff08;3&#xff09;设置 BGP 路由重分发设置路由重新分发 10.3 连接 Tier-0 和 Tier-1 网关10.4 使用网络拓扑验证 Tier…

《人工智能导论》知识思维导图梳理【第7章节】

文章目录 说明一 专家系统二 机器学习2.1 机器学习定义2.2 机器学习过程2.2.1 工作流程2.2.2 模型评估 2.3 机器学习分类在这里插入图片描述 机器学习部分md内容机器学习1 机器学习定义机器学习是从数据中自动分析获得模型&#xff0c;并利用模型对未知数据进行预测机器学习&am…

jpa 修改信息拦截

实现目标springbootJPA 哪个人&#xff0c;修改了哪个表的哪个字段&#xff0c;从什么值修改成什么值 import jakarta.persistence.*; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; im…

嵌入式开发、C++后端开发、C++音视频开发怎么选择?

嵌入式开发、C后端开发和C音视频开发的选择问题 近年来&#xff0c;随着互联网和物联网的快速发展&#xff0c;嵌入式开发、C后端开发和C音视频开发等职业领域也逐渐受到广泛关注。 对于有志于从事这些领域的人来说&#xff0c;如何做出选择呢&#xff1f;下面将从前景、薪酬和…

数据结构 之map/set练习

文章目录 1. 只出现一次的数字算法原理&#xff1a;代码&#xff1a; 2. 随机链表的复制算法原理&#xff1a;代码&#xff1a; 3. 宝石与石头算法原理&#xff1a;代码&#xff1a; 4. 坏键盘打字算法原理&#xff1a;代码&#xff1a; 5. 前K个高频单词算法原理&#xff1a;代…