提取字符串中的最长数学表达式并计算(67%用例) C卷(JavaPythonC++Node.jsC语言)

提取字符串中的最长合法简单数学表达式,字符串长度最长的,并计算表达式的值。如果没有,则返回0
简单数学表达式只能包含以下内容
0-9数字,符号+-*
说明:
1.所有数字,计算结果都不超过long
2.如果有多个长度一样的,请返回第一个表达式的结果
3.数学表达式,必须是最长的,合法的
4.操作符不能连续出现,如+--+1是不合法的

输入描述:

字符串<

输出描述:

表达式值

示例1 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

1-2abcd

输出

-1

Java版本

import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String line = sc.nextLine();long res = 0;int maxLen = 0;int len = line.length();for (int i = 0; i < len; i++) {if (len - i <= maxLen) {break;}for (int j = i; j < len; j++) {String sub = line.substring(i, j + 1);Matcher matcher = Pattern.compile("(\\d+)([*+-])(\\d+)").matcher(sub);if (matcher.find() && j + 1 - i > maxLen) {maxLen = j + 1 - i;long first = Long.parseLong(matcher.group(1));String op = matcher.group(2);long second = Long.parseLong(matcher.group(3));switch (op) {case "+":res = first + second;break;case "-":res = first - second;break;case "*":res = first * second;break;}}}}System.out.println(res);}
}

Python版本

import reline = input()
res = 0
max_len = 0
length = len(line)for i in range(length):if length - i <= max_len:breakfor j in range(i, length):sub = line[i:j+1]match = re.search(r'(\d+)([*+-])(\d+)', sub)if match and j + 1 - i > max_len:max_len = j + 1 - ifirst = int(match.group(1))op = match.group(2)second = int(match.group(3))if op == '+':res = first + secondelif op == '-':res = first - secondelif op == '*':res = first * secondprint(res)

C++版本

#include <iostream>
#include <string>
#include <regex>
using namespace std;int main() {string line;getline(cin, line);long long res = 0;int maxLen = 0;int len = line.length();for (int i = 0; i < len; i++) {if (len - i <= maxLen) {break;}for (int j = i; j < len; j++) {string sub = line.substr(i, j - i + 1);smatch match;regex pattern("(\\d+)([*+-])(\\d+)");if (regex_search(sub, match, pattern) && j + 1 - i > maxLen) {maxLen = j + 1 - i;long long first = stoll(match[1]);string op = match[2];long long second = stoll(match[3]);if (op == "+") {res = first + second;} else if (op == "-") {res = first - second;} else if (op == "*") {res = first * second;}}}}cout << res << endl;return 0;
}

C语言版本

#include <stdio.h>
#include <string.h>
#include <stdbool.h>bool isOperator(char c) {return c == '+' || c == '-' || c == '*';
}long long calculate(long long first, char op, long long second) {if (op == '+') {return first + second;} else if (op == '-') {return first - second;} else if (op == '*') {return first * second;}return 0;
}int main() {char line[100];fgets(line, sizeof(line), stdin);long long res = 0;int maxLen = 0;int len = strlen(line);for (int i = 0; i < len; i++) {if (len - i <= maxLen) {break;}for (int j = i; j < len; j++) {char sub[100];strncpy(sub, &line[i], j - i + 1);sub[j - i + 1] = '\0';long long first, second;char op;int matched = sscanf(sub, "%lld%c%lld", &first, &op, &second);if (matched == 3 && isOperator(op) && j + 1 - i > maxLen) {maxLen = j + 1 - i;res = calculate(first, op, second);}}}printf("%lld\n", res);return 0;
}

Node.js版本

const readline = require('readline');const rl = readline.createInterface({input: process.stdin,output: process.stdout
});function isOperator(c) {return c === '+' || c === '-' || c === '*';
}function calculate(first, op, second) {if (op === '+') {return first + second;} else if (op === '-') {return first - second;} else if (op === '*') {return first * second;}return 0;
}rl.question('Enter a line: ', (line) => {let res = 0;let maxLen = 0;const len = line.length;for (let i = 0; i < len; i++) {if (len - i <= maxLen) {break;}for (let j = i; j < len; j++) {const sub = line.substring(i, j + 1);const match = sub.match(/(\d+)([*+-])(\d+)/);if (match && j + 1 - i > maxLen) {maxLen = j + 1 - i;const first = parseInt(match[1]);const op = match[2];const second = parseInt(match[3]);res = calculate(first, op, second);}}}console.log(res);rl.close();
});

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

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

相关文章

18-结构体(初识)

18-1 概念 我们现在已经知道的数据类型&#xff1a; char short int long float double 但是当我们需要描述一个复杂对象时&#xff0c;这些数据类型单独拿出来不能满足&#xff0c;如&#xff1a; 人&#xff1a;名字年龄性别地址电话 书&#xff1a;书名作者出版社定价书…

HTML静态网页成品作业(HTML+CSS)——电影加勒比海盗介绍设计制作(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

使用Cloudflare来给wordpress网站图片自动压缩加速

首先打开Cloudflare Worker 创建一个服务名称随意&#xff0c;内容使用连接内的wordpress-worker.js内容覆盖原内容即可 https://github.com/Mecanik/cloudflare-image-resizing-worker 然后打开触发器然后添加路由&#xff0c;设置你的域名*.example.com/*注意使用通配符使域名…

2024年短视频矩阵系统源头技术开发商 --- 就315会议主题结束后分析

前言&#xff1a;&#xff08;禁止抄袭复用本编技术分享&#xff09; 短视频矩阵315提出的ip开发你的技术团队是不是还在进行&#xff1f; 2024年短视频矩阵系统源头技术开发商 --- 就315会议主题结束后分析&#xff0c;昨天的315主题会议不知道大家都看了吗&#xff0c;接…

STC89C52单片机 启动!!!(三)

矩阵键盘介绍 当键盘中按键数量较多时&#xff0c;为了减少I/O口的占用&#xff0c;通常将按键排列成矩阵形式。在矩阵式键盘中&#xff0c;每条水平线和垂直线在交叉处不直接连通&#xff0c;而是通过一个按键加以连接。采用逐行或逐列的“扫描”&#xff0c;就可以读出任何位…

厉害了,2024最新听全网音乐神器

今天分享个神器app简助手&#xff0c;听全网音乐和看片&#xff0c;下载地址 夸克网盘分享 玩转互联网达人 苏生不惑备用号&#xff0c;分享各种黑科技软件资源和技巧&#xff0c;带你玩转互联网。 17篇原创内容 公众号 最新版本更新日志。 进入音乐搜索&#xff1a; 听周杰…

day09-Mybatis

一、Mybatis 基础操作 1 需求 功能列表&#xff1a; 查询 根据主键ID查询 条件查询新增更新删除 根据主键ID删除 根据主键ID批量删除 2 准备 实施前的准备工作&#xff1a; 准备数据库表创建一个新的 springboot 工程&#xff0c;选择引入对应的起步依赖&#xff08;mybatis、…

Vue3-03_组件基础_上

单页面应用程序 什么是单页面应用程序 单页面应用程序&#xff08;英文名&#xff1a;Single Page Application&#xff09;简称 SPA&#xff0c;顾 名思义&#xff0c;指的是一个 Web 网站中只有唯一的一个 HTML 页面&#xff0c;所有的 功能与交互都在这唯一的一个页面内完…

Java八股文(Element Plus)

Java八股文のElement Plus Element Plus Element Plus 什么是Element UI 和 Element Plus&#xff1f; Element UI 和 Element Plus 是基于 Vue.js 的一套非常受欢迎的开源 UI 组件库&#xff0c;用于快速构建具有现代化设计和丰富交互效果的前端界面。 Element UI 和 Element…

固态存储是未来|浅析SSD架构的演进与创新技术-2

除了性能和容量这两个最大的诉求外&#xff0c;其他的需求已经成为SSD现场架构的核心竞争力。 一是安全性&#xff1a;随着数据安全威胁日益严重&#xff0c;SSD的安全设计成为关键&#xff0c;包括提供单芯片硬件信任根、遵循FIPS140-3安全标准以及支持一次性可编程位字段来锁…

uni app 钓鱼小游戏

最近姑娘喜欢玩那个餐厅游戏里的钓鱼 &#xff0c;经常让看广告&#xff0c;然后就点点点... 自己写个吧。小鱼的图片自己搞。 有问题自己改&#xff0c;不要私信我 <template><view class"page_main"><view class"top_linear"><v…

react-native使用FireBase实现google登陆

一、前置操作 首先下载这个包 yarn add react-native-google-signin/google-signin 二、Google cloud配置 Google Cloud 去google控制台新建一个android项目&#xff0c;这时候需要用到你自己创建的keystore的sha1值&#xff0c;然后会让你下载一个JSON文件&#xff0c;先保…

C#操作MySQL从入门到精通(4)——连接MySQL数据库

前言 我们创建好数据库、建立好数据库的表以后&#xff0c;我们就需要访问数据库了&#xff0c;比如将数据插入数据库的某张表中等一系列操作&#xff0c;在进行这些操作之前我们需要连接上数据库&#xff0c;本文就是详细讲解如何连接MySQL数据库的。 1、使用Navicat Premiu…

基于ssm+layui的图书管理系统

基于ssmlayui的图书管理系统 账户类型分为&#xff1a;管理员&#xff0c;用户管理员私有功能用户私有功能公共功能技术栈功能实现图 视频演示 账户类型分为&#xff1a;管理员&#xff0c;用户 图书管理系统主要登录账户类型为管理员账户与用户账户 管理员私有功能 账户管理…

厉害了!机器视觉在农业中的应用

机器视觉是一门涉及模式识别、神经生物学、计算机科学、人工智能、图像处理、心理物理学等诸多领域的交叉学科。主要是通过计算机对人类某些视觉方面的智能行为的模拟和再现,再处理并理解从客观事物的图像中提取到的信息,最终达到在实际检测和控制中应用的目的。近年来,随着…

PHP 生成图片

1.先确认是否有GD库 echo phpinfo(); // 创建一个真彩色图像 $image imagecreatetruecolor(120, 50);// 分配颜色 $bgColor imagecolorallocate($image, 255, 255, 255); // 白色背景 $textColor imagecolorallocate($image, 230, 230, 230); // 黑色文字// 填充背景 image…

【Network Management】DCM模块唤醒网络是主动唤醒还是被动唤醒

目录 前言 正文 1.CanNm的状态机分析 2.ComM的状态机分析 3.诊断报文唤醒网络知识扩展

RecyclerView 源码分析之一

简书无法编辑保存了&#xff1f;什么bug&#xff1f;还得回CSDN来写。 写在前面&#xff0c;看RecyclerView源码有点"老虎吃天&#xff0c;无从下口"的感觉。多次提笔想写关于RecyclerView的源码相关文章&#xff0c;最终也是作罢。最大的原因还是感觉RecyclerView的…

Java学习笔记(12)

包 导包 Final 不能被改变的&#xff0c;修饰方法 类 变量 方法不能被重写 类不能被继承 变量&#xff0c;赋值一次&#xff0c;变成常量&#xff0c;不能再被赋值 final修饰引用数据类型&#xff0c;地址值不能变&#xff0c;里面的内容可以变 字符串是不可变的 源码中使…

ThreeJs 可视化大屏地图

效果图&#xff1a; 今天给各位提供一个可视化地图的案例和源码&#xff0c;关注下吧各位&#xff01;回复"大屏地图" 获取工程 1、案例分析&#xff1a;主要使用了UI 美工图片&#xff0c;然后获取地图的json 数据绘制图形&#xff0c;贴图使用该区域的地图纹理进行…