常见算法笔试题的研究2(一元多项表达式的化简)

2023-10-30

题目
背景:

编程实现如下功能:对输入的一元多项式,进行同类项合并,并按指数降序排序,输出处理后的一元多项式。
说明:

多项式由若干个单项式组成,单项式之间为加、减(+,-)关系。
单项式指数字与字母幂的乘积构成的代数式。对一元多项式,字母只有一种。
同类项合并指将多项式中指数相同的单项式,系数经过加减求和,合并为一个单项式。按指数降序指多项式中,单项式按指数从大到小顺序相连。
格式说明

一元多项式输入输出时以字符串形式表示,格式如下

单项式之间用单个加减运算符相连,运算符:+,-
单项式由系数、字母、指数标识符、指数依次直接相连组成,各部分均不能省略。
系数:只由若干0到9数字字符组成(系数不等于0,且不以0开头)
字母:X
指数标识符:^
指数:只由若干0到9数字字符组成(指数可等于0,不等于0时不以0开头)
其他约定
输入不为空串,输出若为0则以空串表示
字符串中除以上字符,不包含空格等其他字符,字符串尾部以’\0’结束
多项式中第一个单项式前加运算时省略+符号,减运算时有-符号
注意:输入多项式符合上述格式,无需检查;输出多项式格式由考生程序保证

规格

输入多项式满足如下规格,考生程序无需检查:
–0<单项式系数<=1000<>
–0<=单项式指数<=3000<>
–单项式个数不限制,但同类项合并处理后,单项式的系数小于65535。
示例

例一
输入:
“7X^4-5X^6+3X^3”
输出:
“-5X^6+7X^4+3X^3”
例二
输入:
“-7X^4+5X^6-3X^3+3X^3+1X^0”
输出:
“5X^6-7X^4+1X^0”

解析
该题目有几个难点
1、输入的字符串如何进行分解得到单项表达式,怎么从单项表达式里面提取系数和指数?
2、每个单项表达式怎么表示?
3、具体算法怎么完成?要求单项式按指数从大到小顺序相连怎么实现?
整体思路
首先说一下我的思路:我是利用单链表的思想解决这个问题,每个单项表达式存为一个节点,先利用正则表达式将该字符串进行分解,得到一个以单项表达式为节点的链表,然后一次遍历链表里面的节点进行计算,新建一个有序的存放计算结果的链表,将计算得到的结果有序的插入,最后利用Stringbuffer将链表里面的信息转换为字符串

具体实现
1、单项表达式节点的表示

/**
 * 单项表达式节点
 *
 */
class Expression {
    char calc;//每个单项表达式前面的符号,可以是+,-
    int index;// 指数
    int ratio;// 系数
    boolean counted = false;// 该项是否已经计算过,默认情况下是没有计算过
    Expression next;//链接链表的指针
}

counted用来表示该单项表达式是否已经计算过,如果已经计算过遍历到的时候也直接跳过,不再进行计算。

2、将字符串转换为链表
代码注释的很详细,如果正则表达式看不懂的自己百度一下

private static Expression GetExpression(
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常见算法笔试题的研究2(一元多项表达式的化简) 的相关文章

  • 面向对象编程的三大特性

    面向对象编程主要体现为三个特性 1 封装性 面向对象编程的核心思想之一就是将数据和对数据的操作封装在一起 通过抽象 即从 具体的实例中抽取出共同的性质形成一般的概念 例如类的概念 Java 中属性的封装 无特殊情况都是用的 private
  • InputAction的使用

    感觉Unity中InputAction的使用 步步都是坑 需求点介绍 当用户长按0 5s 键盘X或者VR left controller primaryButton 即X键 时 显示下一个图片 步骤总览 创建InputAction资产 将该
  • 数据库杂谈(三)——关系代数

    3 形式化关系查询语言 摘要 关系代数是一种抽象的查询语言 用对关系的运算来表达查询 作为研究关系数据语言的数学工具 在本文中 我们不仅谈论关系代数的知识点 而且还配备了对应的练习题 文章目录 3 形式化关系查询语言 3 1 关系代数 3
  • 【笔记】C++笔记

    1 书写HelloWorld include
  • ICML 2015压轴讨论总结:6大神畅谈深度学习的未来

    原文地址 http www csdn net article 1970 01 01 2825290
  • Error during WebSocket handshake: Unexpected response code: 404,springboot整合websocket出错

    Error during WebSocket handshake Unexpected response code 404 浏览器访问websocket出现错误 一 运行环境 二 需要引入的包 三 项目路径 四 工具类 五 静态页面以及js
  • CPU一级缓存L1 D-cache\L1 I-cache与二级缓存L2 cache深度分析

    CPU缓存 通过优化的的读取机制 可以使CPU读取缓存的命中率非常高 大多数CPU可达90 左右 也就是说CPU下一次要读取的数据90 都在缓存 SRAM 中 只有大约10 需要从内存 DRAM DDR等 读取 这大大节省了CPU直接读取内
  • 算法篇:贪心算法解决田忌赛马问题

    田忌赛马 贪心算法 问题分析 这是一道很经典的贪心算法入门题 这道题贪心的思想是 要把每一匹马的作用发挥到最大 把已 方赢的概率增加到最大 我是从双方慢马的角度来分析的 其实快马和慢马的思路差不多 用田忌最慢的马与王最慢的马相比较 1 如果
  • Spring 中如何为Bean注入集合呢?

    转自 Spring 中如何为Bean注入集合呢 下文讲述Spring中为Bean注入集合的方法分享 如下所示 常见的集合类型有 List Set Map 和 properties 标签 集合名称 说明
  • DC-DC电源转换电路设计

    第1条 搞懂DC DC电源怎么回事 DC DC电源电路 又称为DC DC转换电路 其主要功能就是进行输入输出电压转换 一般我们把输入电源电压在72V以内的电压变换过程称为DC DC转换 常见的电源主要分为车载与通讯系列和通用工业与消费系列
  • 【ES】多字段聚合分析

    public static Map
  • Vscode python配置了numpy包之后无法调用

    如果之前已经在vscode中配置好了numpy等其他库并且运行成功了 突然换了一个文件打开 如果发现找不到numpy库 很大可能是vscode将你的python解释器给更换了 如上所示 除了自己安装的python解释器之外 还有内置的和其他
  • 《QDebug 2023年6月》

    一 Qt Widgets 问题交流 二 Qt Quick 问题交流 1 Qt5 的 QML Settings 没有设置编码的接口 Qt6 虽然移除了 QSettings 的 setIniCodec 接口 默认为 utf8 但是 Qt5 这个
  • FPGA — BRAM 队列实践

    使用软件 Vivado 开发板 EGO1采用Xilinx Artix 7系列XC7A35T 1CSG324C FPGA BRAM 队列实践 功能描述 功能实现 1 添加BRAM的IP 2 数码管显示 3 时钟分频 4 按键消抖 5 顶层设计
  • Java-Exception-异常处理

    一 基本介绍 异常处理就是当异常发生时 对异常处理的方式 二 异常处理的方式 1 try catch finally 程序员在代码中捕获发生的异常 自行处理 2 throws 将发生的异常抛出 交给调用者 方法 来处理 最顶级的处理者就是J
  • 【Android】从SurfaceFlinger中获取各layer图片(4)再回顾

    从SurfaceFlinger中获取各layer图片的试验可以加深对GraphicBuffer和Layer的理解 dumpsys SurfaceFlinger中打印的Slot信息中有GraphicBuffer的指针 可以帮助我们了解Queu
  • thinkphp 用七牛云异步上传文件(前后端代码)

    1 首先创建一个七牛云帐号 完成后 添加对象存储 2 创建成功后 右上角 密钥管理 查看秘钥 找到AK SK 3 打开thinkphp的配置文件 将此代码加入 CONFIG QINIU gt array accessKey gt 你的AK
  • ARouter 使用教程,移动互联网开发工程师

    setContentView R layout activity one 第二步 调用 navigation 方法实现跳转 ARouter getInstance build ARouterConstants COM ACTIVITY1 n
  • whl文件安装库和pip换源

    作者介绍 作者 小刘在C站 每天分享课堂笔记 一起努力 共赴美好人生 夕阳下 是最美的绽放 目录 一 whell介绍 二 whell实现方式 三 whell安装实现 方式一 方式二 步骤1 步骤3 pip的换源 一 pip为什么要换源 二

随机推荐

  • 成功升级scikit-image的版本,从老版本0.13.0到0.17.2

    成功升级scikit image的版本 从老版本0 13 0到0 17 2 之前参考其他博客升级scikit image的版本没有成功 这次参考scikit image的github官网 顺利实现了升级 scikit image的githu
  • 线程和线程的创建

    一 线程的概念 1 实例 系统通过传感器采集数据 并通过显示屏将数据显示出来 在多线程实时系统中 可以将这个任务分解成两个子任务 如上图所示 一个子任务不间断地读取传感器数据 并将数据写到共享内存中 另外一个子任务周期性的从共享内存中读取数
  • [Mysql] 经典 50 题

    50道MySql练习题 本文档只有45道 流传自远古 相当经典 这套练习在多样性和难度上平衡的比较好 换句话说 基础sql查询练习有这套就够了 这套练习在互联网上存在时间悠久 有很多版本 本文档力图在可读性 规范性 可操作性上比这些版本做的
  • 一贴看懂UML,不再发愁看不懂设计模式

    在UML类图中 常见的有以下几种关系 泛化 Generalization 实现 Realization 关联 Association 聚合 Aggregation 组合 Composition 依赖 Dependency 1 泛化 Gene
  • java学习笔记——springmvc 之 @RequestMapping映射与RESTful、请求数据传入 与 响应数据传出、@ModelAttribute 与 视图解析

    一 SpringMVC 概述 1 SpringMVC 概述 Spring 为展现层提供的基于 MVC 设计理念的优秀的 Web 框架 是目前最主流的 MVC 框架之一 Spring3 0 后全面超越 Struts2 成为最优秀的 MVC 框
  • C++中将构造函数或析构函数定义为private

    今天面试被问到了这个单例模式常用到的技术手段 下面进行分析 很多情况下要求当前的程序中只有一个object 例如一个程序只有一个和数据库的连接 只有一个鼠标的object 通常我们都将构造函数的声明置于public区段 假如我们将其放入pr
  • SQL中DML 语句基本增删改以及创建表结构

    SQL 的分类 DDL 创建create 删drop 改alter DML 增insert 删delete 改update DCL 数据控制语言 赋权 grant revoke DQL 查询 select等 TCL 事务控制语言 提交com
  • TDD:第一次真正使用TDD的感受

    TDD测试流程 先写测试 后写代码 进行重构 TDD原则 一次只测试一个类 一次只测试一个功能 TDD优势 强迫你做出松散耦合的设计 强迫你站在用户的角度思考问题 作为负效果 你拥有了自动化测试 测试可以作为文档使用
  • 【华为OD机试】最多等和不相交连续子序(python, java, c++, js)

    最多等和不相交连续子序 前言 本专栏将持续更新互联网大厂机试真题 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于大厂机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda e
  • 量化投资学习-18:切换思考问题的立场与视角,与庄家共赢共舞,是散户真正转变的开始

    一个人 视角不同 同一现象 得到的结论也是不相同的 一个人 视角不同 看到的大局观也是不一样的 散户由于自身角色是散户 大部分散户自然而然的把自己放到了散户的角色上 把自己放到了庄家的对立面 于是 散户自己看到自己周边的世界 于是散户的视角
  • UNIX环境高级编程 学习笔记 第三章 文件I/O

    UNIX系统大多数文件IO只用open read write lseek close函数 不带缓冲的IO指每个read和write都调用内核中的一个系统调用 不带缓冲的IO不是ISO C的组成部分 但它是POSIX 1和SUS 是POSIX
  • 小程序获取当前进页面的来源

    前言 小程序获取当前进页面的来源 wx getLaunchOptionsSync 官方资料 wx getLaunchOptionsSync 获取小程序启动时的参数 与 App onLaunch 的回调参数一致 启动参数 更多参数信息 请点击
  • 【国赛LaTeX】数学建模国赛LaTex模板(完全免费)

    全国大学生数学建模竞赛 高教社杯 创办于1992年 每年一届 是首批列入 高校学科竞赛排行榜 的19项竞赛之一 2019年 来自全国及美国和马来西亚的1490所院校 校区 42992队 本科39293队 专科3699队 近13万人报名参赛
  • python可以走的路线_怎样的Python学习路线比较好?

    1 弄清楚你的动机是什么 在开始深入学习Python在线之前 值得问问自己为什么要学习它 这是因为这将是一个漫长而有时痛苦的旅程 没有足够的动力 你可能无法完成 找出激励你的动力将帮助你找到一个最终目标 一条让你无所畏惧的道路 您不必弄清楚
  • 【办公类-16-06】20230901大班运动场地分配表-斜线排列、5天循环、不跳节日,手动修改节日”(python 排班表系列)

    背景需求 大班组长发来一个 运动排班 的需求表 就是和去年一样的每个班的运动排班 就因为今年大班变成7个班 删掉一个场地 就要重新做一份 不然我就用去年的那份了 8个大班排班 拆了中8班 孩子被分流到其他7个大班 于是我拿出2023年2月的
  • 机械革命X6ti-s安装ubuntu16.04及独显驱动配置

    新入手的笔记本 显卡是GTX1050的 cup i7 6700的 安装ubuntu过程中遇到各种问题 例如进入不了安装u盘 我是用u盘安装的 开机和关机都会卡在log界面 显卡驱动不能正常安装等问题 下边的方法完美解决所有问题 不留隐患 屡
  • sort指令

    1 sort的定义 sort将文件的每一行作为一个单位相互比较 比较原则是从首字符向后依次按ASCII码进行比较 最后将它们按升序输出 例 2 选项 1 u 在输出行中排序并去除重复行 例 2 r 逆序排序 说明 sort默认的排序方式是升
  • 比较好的在线绘制图表工具

    图标秀 https www tubiaoxiu com 可以直接复制粘贴excel表格内容 或者导入EXCEL的表格
  • Candence PCB Allegro④约束规则管理与布线

    目录 1 约束规则管理器 1 1 线宽规则 physical 1 2 线距规则 spacing 1 3 区域规则 region 1 4 过孔 2 布线 2 1 布线命令 add connect 2 2 推挤命令 slide 2 3 复制命令
  • 常见算法笔试题的研究2(一元多项表达式的化简)

    题目 背景 编程实现如下功能 对输入的一元多项式 进行同类项合并 并按指数降序排序 输出处理后的一元多项式 说明 多项式由若干个单项式组成 单项式之间为加 减 关系 单项式指数字与字母幂的乘积构成的代数式 对一元多项式 字母只有一种 同类项