Java-Part 0

Advanced Java and Cutting-edge Applications

Part 0: Course presentation

image-20240922221436556

Part 1

其实就是个括号匹配问题,Stack 经典问题,但是好久没用Java,有一点点生疏,感觉老师的版本要简洁的多

package tiei.ajp.test;import java.util.HashMap;
import java.util.Map;
import java.util.Stack;public class CheckBalance {public String str;public CheckBalance() {}public CheckBalance(String string) {str = string;}public boolean balanced() {Stack<Character> stack = new Stack<>();char[] s = str.toCharArray();Map<Character, Integer> map = Map.of('(', 1, '[', 2, '{', 3, ')', 4, ']', 5, '}', 6);for (Character c : s) {
//            if ((c != '(') && (c != ')') && (c != '[') && (c != ']') && (c != '{') && (c != '}')) continue;if(!map.containsKey(c)) continue;
//            if (c == '(' || c == '{' || c == '[') {if (map.get(c) <= map.size() / 2) {stack.push(c);} else {if (stack.empty()) return false;char temp = stack.peek();
//                if ((temp == '(' && c == ')') || (temp == '[' && c == ']') || (temp == '{' && c == '}')) {if (map.get(c) - map.get(temp) == map.size() / 2) {stack.pop();} else {return false;}}}return stack.empty();}public int index() {Stack<Integer> stack = new Stack<>();char[] s = str.toCharArray();for (int i = 0; i < s.length; i++) {char c = s[i];
//            if (Character.isLetter(c) || c == ' ') continue;if ((c != '(') && (c != ')') && (c != '[') && (c != ']') && (c != '{') && (c != '}')) continue;if (c == '(' || c == '{' || c == '[') {stack.push(i);} else {if (stack.empty()) return i;char temp = s[stack.peek()];if ((temp == '(' && c == ')') || (temp == '[' && c == ']') || (temp == '{' && c == '}')) {stack.pop();} else {return i;}}}if (!stack.empty()) return stack.peek();return -1;}
}

老师版本:

package tiei.ajp.test;import java.util.HashMap;
import java.util.Map;
import java.util.Stack;public class CheckBalance {private final String OPENINGS = "([{";private final String CLOSINGS = ")]}";private String s;private int index;private boolean balanced;public CheckBalance(String str) {this.s = str;balanced = balancedPrivate();}public boolean balanced(){return balanced;}private boolean balancedPrivate() {index = 0;Stack<Character> stack = new Stack<>();for (index = 0; index < s.length(); index++) {char c = s.charAt(index);if (isOpening(c)) {stack.push(c);} else if (isClosing(c)) {if (stack.empty() || dontMatch(stack.pop(), c)) {return false;}}}return stack.isEmpty();}public int index() {return index;}private boolean isOpening(char c) {return OPENINGS.indexOf(c) > -1;}private boolean isClosing(char c) {return CLOSINGS.indexOf(c) > -1;}private boolean dontMatch(char o, char c) {return OPENINGS.indexOf(o) != CLOSINGS.indexOf(c);}
}
Part 2
package tiei.ajp.test;public class ArrayStack {private static int MAX_SIZE = 100;private char[] stackArray;private int top;public ArrayStack(){stackArray = new char[MAX_SIZE];top = -1; }public boolean isEmpty(){return top == -1;}public char peek(){if (isEmpty()) {return '\0';}return stackArray[top];}public void push(char c){if (top < MAX_SIZE - 1) {stackArray[++top] = c;}}public char pop(){if (isEmpty()) {return '\0';}return stackArray[top--];}
}
Part 3
package tiei.ajp.test;public class ListStack {private class Node {char data;Node next;Node(char data) {this.data = data;this.next = null;}}private Node top;public ListStack() {top = null;}public boolean isEmpty() {return top == null;}public char peek() {if (isEmpty()) {return '\0';}return top.data;}public void push(char c) {Node newNode = new Node(c);newNode.next = top;top = newNode;}public char pop() {if (isEmpty()) {return '\0';}char popData = top.data;top = top.next;return popData;}
}
Test code
//
// Advanced Java Programming
// TIEI - Fall 2024
//
package tiei.ajp.test;import java.util.*;
import tiei.ajp.test.CheckBalance;/*** A TestCheckBalance class for the test* YOU MUST NOT CHANGE THIS CLASS!!!*/
public class TestCheckBalance {// the expected answers from the userprivate static final String YES = "yes";private static final String NO  = "no";/*** The main program*/public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("Welcome to the Balance Checking Program");do {System.out.print("\nEnter the string you wish to check: ");String theString = input.nextLine();CheckBalance check = new CheckBalance(theString);if ( check.balanced() )System.out.println("The string is balanced!");else {System.out.println("The string is unbalanced:\n");System.out.println(theString);System.out.printf("%" + ( check.index() + 2 ) + "s", "^\n");}System.out.println();} while ( more(input) );}// Ask the user for more and return a booleanprivate static boolean more(Scanner input) {String answer = null;do {System.out.print("More ('" + YES + "' or '" + NO + "')? ");answer = input.nextLine().trim().toLowerCase();} while ( ! answer.equals(YES) && ! answer.equals(NO) );return answer.equals(YES);}
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

java项目之基于spring boot的多维分类的知识管理系统的设计与实现源码

项目简介 基于spring boot的多维分类的知识管理系统的设计与实现实现了以下功能&#xff1a; 基于spring boot的多维分类的知识管理系统的设计与实现的主要使用者管理员可以管理用户信息&#xff0c;知识分类&#xff0c;知识信息等&#xff0c;用户可以查看和下载管理员发布…

Python|OpenCV-实现识别目标图像中的圆圈(20)

前言 本文是该专栏的第22篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。 在处理图像检测项目的时候,可能会遇到需要检测目标图像中的“圆圈”需求。笔者在这里举个例子,如下图所示: 在图中有一个篮球,但是我们要找的目标对象并不是篮球,而是篮球它本身的这个…

BUUCTF-MISC-数据包中的线索

下载题目文件&#xff0c;解压发现是一段流量包 使用Wireshark打开 首先过滤HTTP数据流 然后追踪HTTP数据流 通过追踪数据流可以发现 流7 当中有一段base64编码&#xff0c;我们尝试解码 base64基本特征 Base64编码只包含64个字符&#xff1a;大写字母&#xff08;A-Z&#x…

(四)悟说几个特殊矩阵及矩阵函数

上一期介绍了矩阵的出现源于解线性方程组。但是&#xff0c;矩阵出现之后&#xff0c;就犹如打开了潘多拉的盒子&#xff0c;会产生许多魔法。 1 旋转矩阵 我们知道用矩阵左乘某个向量&#xff0c;相当于对该向量做线性变换。那么是否有一种矩阵&#xff0c;能让向量旋转&…

2D目标检测常用loss

在2D目标检测任务中&#xff0c;常用的损失函数&#xff08;Loss&#xff09;主要用于优化以下三个关键方面&#xff1a; 类别分类&#xff08;Classification&#xff09;&#xff1a;用于区分检测到的对象属于哪一类。边界框回归&#xff08;Bounding Box Regression&#x…

《代码整洁之道:程序员的职业素养》

作者&#xff1a;【美】Robert C. Martin 第1章 专业主义 专业主义就意味着担当责任&#xff0c;软件开发太复杂了&#xff0c;不可能没什么 bug。但很不幸&#xff0c;这并不能为你开脱。人体太复杂了&#xff0c;不可能尽知其全部&#xff0c;但医生仍要发誓不伤害病人。如…

基于单片机的智能温控风扇系统的设计

&#xff3b;摘 要&#xff3d; 设计一种基于单片机的智能温控风扇系统&#xff0c;系统由 STC 系列的 51 单片机 、 温度传感器 、 LED 数码管和风扇等模块组成。 本系统具有对外界温度感知以及对感知数据进行分析处理 、 智能调节等功能&#xff0c;避免因温度过高而产生…

6.定期自动执行脚本,让你的金融数据库及时更新!

上一节课我们配置好了我们的运行环境&#xff0c;今天我来教大家怎么在不同的环境下配置定时任务&#xff0c;从而自动执行脚本以更新数据库。 一、Windows下定时执行脚本 如果你的电脑是Windows&#xff0c;并且你没有一台支持Docker的NAS、也没有一台Linux服务器&#xff0…

text2sql方法:RESDSQL和DAIL-SQL

之前介绍了text2sql的综述&#xff0c;但是对一些方法的描述不够详细&#xff0c;所以将一些感兴趣的方法思路也整理一下。 RESDSQL RESDSQL出自2023年2月的论文《RESDSQL: Decoupling Schema Linking and Skeleton Parsing for Text-to-SQL》(github)。它使用seq2seq PLM(pr…

[笔记] 走行电机控制器 防摇摆功能的技术细节

防摇摆用于走行电机控制&#xff0c;一般用于小车。这里参考了数重的彩页&#xff1a; 1.原理 这个无效和有效的控制是靠启动时的幔起&#xff0c;和停车时的缓停实现的。他似乎对加速过程的力矩曲线做了某种控制&#xff0c;能够让启停时&#xff0c;必然的角度变化在运动中逐…

【时时三省】(C语言基础)指针笔试题3

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 笔试题3 首先创建了一个数组 数组里面放了1 2 3 4 &a取出的是数组的地址 数组地址加1 如下图 直接从1跳到了四后面 然后强制类型转换成了int* 转换成int*之…

ModbusTCP通讯错误的排查

Modbus是一种由MODICON公司开发的工业现场总线协议标准&#xff0c;是一项应用层报文传输协议。该协议用于传输数字和模拟变量[1]。有关该协议的报文具体格式&#xff0c;以及一些基本概念&#xff0c;见[1]。 本文以一个例子&#xff0c;阐述当ModbusTCP通讯出现错误的时候&a…

01_RabbitMQ安装及工作模式

一、消息队列MQ 中间件 1.1 什么是消息队列 消息&#xff08;Message&#xff09;是指在应用间传送的数据。消息可以非常简单&#xff0c;比如只包含文本字符串&#xff0c;也可以更复杂&#xff0c;可能包含嵌入对象。 消息队列&#xff08;Message Queue&#xff09;是一…

鸿蒙开发(NEXT/API 12)【跨设备互通开发】远场通信服务

跨设备互通提供跨设备的相机、扫描、图库访问能力&#xff0c;平板或2in1设备可以调用手机的相机、扫描、图库等功能。 场景介绍 您通过此能力实现跨设备交互&#xff0c;可以使用其他设备的相机、扫描和图库功能。 约束与限制 需同时满足以下条件&#xff0c;才能使用该功…

COLORmap

在这段MATLAB代码中&#xff0c;surf(peaks)、map的定义以及colormap(map)的调用共同完成了以下任务&#xff1a; 1. **绘制曲面图**&#xff1a; - surf(peaks)&#xff1a;这个函数调用了MATLAB内置的peaks函数来生成数据&#xff0c;并使用surf函数将这些数据绘制成一个…

CSS 选择器的分类与使用要点二

目录 非 VIP 用户可前往公众号进行免费阅读 标签选择器 id 选择器 类选择器 介绍 公共类 CSS 中优先用 class 选择器,慎用 id 选择器 后代选择器 交集选择器 以标签名作为开头 以类名作为开头 连续交集 并集选择器(分组选择器) 通配符* 儿子选择器 >(IE7…

CSS 的继承性、层叠性与权重问题解析

目录 非 VIP 用户可前往公众号进行免费阅读 继承性 层叠性 CSS的权重问题 如果权重一样,以后出现的为准 以权重大的为准 没有选中,权重为0,就近原则 权重只和css顺序有关 非 VIP 用户可前往公众号进行免费阅读 CSS 的继承性、层叠性与权重问题解析本文主要介绍了 C…

AIGC8: 高通骁龙AIPC开发者大会记录B

图中是一个小男孩在市场卖他的作品。 AI应用开发出来之后&#xff0c;无论是个人开发者还是企业开发者。 如何推广分发是面临的大问题。 做出来的东西一定要符合商业规律。否则就是实验室里面的玩物&#xff0c;或者自嗨的东西。 背景 上次是回顾和思考前面两个硬件营销总的…

解决Python Debug没有反应的问题

应该有伙伴和我一样&#xff0c;用的2024版本的VS code&#xff0c;但是用到的python解释器是3.6.x&#xff0c;或者是更旧版本的Python. 想要进行Debug就会在扩展里面安装 一般安装就会安装最新版本&#xff0c;但是debug时又没有反应&#xff0c;其主要原因是Python的版本与…

Gin框架入门(2)--异常捕获与日志实现

异常捕获 Go语言的异常捕获采用的是延迟处理的方法实现的&#xff0c;实际上就是利用defer&#xff0c;panic和recover三个关键字和函数来实现的。 关键字 defer关键字(函数) 这个关键字在控制语句中就有所涉及&#xff0c;本质上是采用一个栈的存储结构&#xff0c;在整个…