OJ-0813

题目

在这里插入图片描述
示例:

输入:
1-2abcd
输出:
-1

参考

import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
import java.util.Stack;public class Main {// 保存数字的栈static Stack<Long> nums = new Stack<>();// 保存运算符的栈static Stack<Character> ops = new Stack<>();// 运算符的集合static Set<Character> st = new HashSet<>(Arrays.asList('+', '-', '*'));public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 从输入读取表达式字符串String s = scanner.nextLine();// 调用方法计算表达式的最大值long result = findMaxExpressionValue(s);// 输出结果System.out.println(result);}// 计算表达式的最大值static long findMaxExpressionValue(String s) {int n = s.length();nums.clear();ops.clear();long result = 0;int maxLength = 0;// 枚举所有可能的子串for (int i = 0; i < n; i++) {for (int j = i; j < n; j++) {// 获取子串String t = s.substring(i, j + 1);// 检查子串是否为有效表达式,并且长度是否大于当前最大长度if (check(t) && j - i + 1 > maxLength) {maxLength = j - i + 1;// 计算当前子串的值result = calculate(t);}}}return result;}// 执行一次运算static long eval() {// 如果数字栈的大小小于 2,说明运算失败if (nums.size() < 2) return -1;long b = nums.pop();long a = nums.pop();char c = ops.pop();// 根据运算符执行相应的运算,并将结果压入数字栈if (c == '+') nums.push(a + b);else if (c == '-') nums.push(a - b);else nums.push(a * b);return 0;}// 计算表达式的值static long calculate(String s) {int n = s.length();nums.clear();ops.clear();for (int i = 0; i < n; i++) {char c = s.charAt(i);// 如果是数字,找到整个数字并压入数字栈if (Character.isDigit(c)) {int j = i;while (j < n && Character.isDigit(s.charAt(j))) j++;long x = Long.parseLong(s.substring(i, j));nums.push(x);i = j - 1;} else if (c != '*') {// 如果是运算符且不是乘法,清空运算符栈while (!ops.isEmpty()) eval();ops.push(c);} else {// 如果是乘法,清空运算符栈中的乘法运算符while (!ops.isEmpty() && ops.peek() == '*') eval();ops.push(c);}}// 清空剩余的运算符while (!ops.isEmpty() && nums.size() > 1) eval();return nums.isEmpty() ? -1 : nums.peek();}// 检查字符串是否为有效表达式static boolean check(String s) {int n = s.length();for (int i = 0; i < n; i++) {// 检查相邻的运算符是否合法if (i < n - 1 && st.contains(s.charAt(i)) && st.contains(s.charAt(i + 1))) return false;// 检查非运算符字符是否合法if (!st.contains(s.charAt(i)) && (s.charAt(i) < '0' || s.charAt(i) > '9')) return false;}return true;}
}

https://blog.csdn.net/weixin_52908342/article/details/135375933

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

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

相关文章

Qt使用lupdate工具生成.ts文件

Qt提供了lupdate工具&#xff0c;用于从源代码中提取需要翻译的字符串【1】&#xff0c;并生成或更新.ts文件 注解【1】&#xff1a;使用tr()函数&#xff08;或者QCoreApplication::translate()等其他相关的翻译函数&#xff09;来标记所有需要翻译的文本。例如&#xff1a; …

WEB应用(十五)---文件包含

文件包含的概念 在各种开发语言中都提供了内置的文件包含函数&#xff0c;可以使得开发人员在一个代码文件中直接包含&#xff08;引入&#xff09;另外一个代码文件。 由于文件包含可以达到复用和方便修改的目的&#xff0c;在代码设计中常常使用。 大多数情况下&#xff0…

Ethercat学习-SOEM主站源码解析(DC部分)

文章目录 SOEM DC模式源码简介示例用图ecx_porttimeecx_parentportecx_configdc如果从站不支持DC如果从站支持DC SOEM DC模式源码简介 示例用图 本文中都会围绕着这个图来讲&#xff0c;从站的port编号依次为0&#xff0c;3&#xff0c;1&#xff0c;2 在SOEM中&#xff0c;与…

【vulnhub】Broken: Gallery靶机

靶机安装 下载地址&#xff1a;Broken: Gallery ~ VulnHub 信息收集 靶机IP发现 nmap 192.168.93.0/24 端口扫描 nmap -A 192.168.93.167 -p- 目录扫描 dirsearch -u http://192.168.93.167 页面访问&#xff0c; 没有可用的信息 尝试22端口的ssh进行爆破 hydra -L roc…

算法的学习笔记——二进制中 1 的个数(牛客JZ15)

&#x1f600;前言 在计算机科学中&#xff0c;二进制是计算和存储数据的基础。理解二进制中的基本运算有助于我们解决各种编程问题。一个经典的问题是&#xff1a;给定一个整数&#xff0c;如何快速计算该整数的二进制表示中1的个数。 &#x1f3e0;个人主页&#xff1a;尘觉主…

【计算机毕设】基于SpringBoot的教育局综合信息管理平台-学生端

&#x1f497;博主介绍&#xff1a;✌全平台粉丝5W,高级大厂开发程序员&#x1f603;&#xff0c;博客之星、掘金/知乎/华为云/阿里云等平台优质作者。 【源码获取】关注并且私信我 【联系方式】&#x1f447;&#x1f447;&#x1f447;最下边&#x1f447;&#x1f447;&…

在Windows上用Visual Studio编译OpenCV

在Windows上编译开源项目&#xff0c;有时候让人痛不欲生&#xff0c;有时候却出奇地顺利。OpenCV属于后者。本文记录这次愉快的过程。 注&#xff1a;OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库。它提供了大…

全面介绍 Apache Doris 数据灾备恢复机制及使用示例

引言 Apache Doris 作为一款 OLAP 实时数据仓库&#xff0c;在越来越多的中大型企业中逐步占据着主数仓这样的重要位置&#xff0c;主数仓不同于 OLAP 查询引擎的场景定位&#xff0c;对于数据的灾备恢复机制有比较高的要求&#xff0c;本篇就让我们全面的介绍和示范如何利用这…

PyTorch 基础学习(3) - 张量的数学操作

下面是关于PyTorch中常见数学操作的概述和教程&#xff0c;包括逐点运算、比较操作、线性代数操作等&#xff0c;突出每个操作的重点用法和示例。 逐点操作 (Pointwise Operations) 1. torch.abs 功能: 计算输入张量的每个元素的绝对值。用法: torch.abs(input)示例:import …

c++继承(二)

一、友元函数的继承 友元函数不能被继承&#xff0c;就像爸爸的朋友不是你的朋友&#xff0c;如果要有友元函数&#xff0c;在子类重新定义一个。 二、静态成员的继承 静态成员的继承仍然是那个成员&#xff0c;普通成员的继承是不同的。 父类的静态成员属于当前类&#xf…

20240813 每日AI必读资讯

Flux生成网红博主因太逼真爆火&#xff01;有人用Claude写代码识破“AI美女” - Flux生成的情侣合照逼真程度达到恐怖级别&#xff0c;挑战人类视觉辨识能力。 - 网友发现Flux生成的照片几乎完美&#xff0c;但仍有细微瑕疵可供识别。 - 有人利用Flux等工具制作逼真的YouTub…

[upload]-[GXYCTF2019]BabyUpload1-笔记

尝试上传.htaccess和图片和一句话木马提示 php文件提示 响应头可以看到 构造一句话图片木马如下&#xff1a; <script languagephp>eval($_POST[cmd]);</script> 上传成功 必须增加文件夹下jpg后缀解析php .htaccess如下 <FilesMatch "jpg">Set…

浙大数据结构慕课课后题(06-图2 Saving James Bond - Easy Version)(拯救007)

题目要求&#xff1a; This time let us consider the situation in the movie "Live and Let Die" in which James Bond, the worlds most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land at the center of a lake fi…

LabVIEW中CANopen 读取程序解读

这段程序用于创建 CANopen 接口&#xff0c;并读取 CANopen CAN 帧消息。以下是详细的解读&#xff1a; 左侧部分 node-ID (U8): 指定节点 ID&#xff0c;用于标识 CANopen 网络中的设备。CANopen interface (U32): 指定 CANopen 接口。baud rate (U32): 设置波特率&#xff0…

vulnhub系列:sp eric

vulnhub系列&#xff1a;sp eric 靶机下载 一、信息收集 nmap扫描存活&#xff0c;根据mac地址寻找IP nmap 192.168.23.0/24nmap扫描端口&#xff0c;开放端口&#xff1a;22、80 nmap 192.168.23.189 -p- -A -sV -Pndirb 扫描目录&#xff0c;.git 源码&#xff0c;admin…

向上or向下调整建堆 的时间复杂度的本质区别的讲解

知识点&#xff1a;&#xff08;N代表节点数&#xff0c;h代表高度&#xff09; 1&#xff1a;高度为h的满二叉树节点个数N为 2^&#xff08;h&#xff09;-1 即N 2^&#xff08;h&#xff09;-1 2&#xff1a;所以h log&#xff08;N1&#xff09; 一&#xff1a;向上…

C++STL详解(四)——vector类的具体实现

在上篇文章中&#xff0c;我们已经学习了vector的具体接口使用方法&#xff0c;在本篇文章中&#xff0c;我们将学习实现一个vector容器。 目录 一.vector各函数接口总览 二.vector当中的私有成员 三.默认成员函数 3.1构造函数 3.1.1构造函数1 3.1.2构造函数2 3.1.3构造…

百数移动端重大更新:全面优化,用户体验再升级!

本次发布的优化更新的功能&#xff0c;主要是为了提升用户的移动端使用体验。此次改版不仅优化了控件样式&#xff0c;提升视觉与交互体验&#xff0c;还在子表单功能上实现了重大突破&#xff0c;如新增复制、插入行功能等。 同时&#xff0c;新增功能——数据加载&#xff0…

Python之简单了解pylab绘图工具和汇编语言

《Python入门经典以解决计算问题为导向的Python编程实践》89-93页的笔记。 用pylab对数据绘图最小的通用计算 用pylab对数据绘图 PyLab是Matplotlib面向对象绘图库的过程界面。Matplotlib是整个软件包&#xff1b; matplotlib.pyplot是Matplotlib中的一个模块&#xff1b;而P…

【物联网】(蓝牙篇)微信小程序ios如何自动打开蓝牙

微信小程序打开蓝牙的便捷之道——微信小程序ios如何自动打开蓝牙 随着智能手机蓝牙技术和物联网产品的普及&#xff0c;很多人在使用微信小程序时&#xff0c;都希望能够更便捷地打开蓝牙功能。 在iOS系统上&#xff0c;由于其封闭性和权限控制严格&#xff0c;使得自动打开蓝…