Java-Part 0

devtools/2024/9/23 1:02:52/

Advanced Java and Cutting-edge Applications

Part 0: Course presentation

image-20240922221436556

Part 1

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

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;}
}

老师版本:

java">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
java">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
java">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
java">//
// 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.ppmy.cn/devtools/115722.html

相关文章

信安 实验1 用Wireshark分析典型TCP/IP体系中的协议

实验1 用Wireshark分析典型TCP/IP体系中的协议 实验目的 通过Wireshark软件分析典型网络协议数据包&#xff0c;理解典型协议格式和存在的问题&#xff0c;为后续学习和相关实验打下基础。 实验内容 &#xff08;1&#xff09;安装Wireshark&#xff0c;熟悉功能菜单。 &…

高速服务区生活废水处理设备产地货源

诸城市鑫淼环保小编带大家了解一下高速服务区生活废水处理设备产地货源 高速公路服务区生活污水处理设备是专门针对高速公路服务区产生的生活污水进行处理的设备。这些设备通常具备高效、稳定、环保等特点&#xff0c;以确保服务区产生的污水能够得到有效处理&#xff0c;达到排…

计算机网络第二章(部分)

R1. 五种非专用的因特网应用及它们所使用的应用层协议: 电子邮件 (Email) - 使用 SMTP&#xff08;简单邮件传输协议&#xff09;文件传输 (File Transfer) - 使用 FTP&#xff08;文件传输协议&#xff09;网页浏览 (Web Browsing) - 使用 HTTP/HTTPS&#xff08;超文本传输协…

【Java】接口interface【主线学习笔记】

文章目录 前言接口interface接口内部结构的说明实现接口之间的关系接口的多态性 前言 Java是一门功能强大且广泛应用的编程语言&#xff0c;具有跨平台性和高效的执行速度&#xff0c;广受开发者喜爱。在接下来的学习过程中&#xff0c;我将记录学习过程中的基础语法、框架和实…

实时加密机的工作原理

实时加密机&#xff0c;作为数据加密领域的一种高级硬件设备&#xff0c;主要承担着对敏感数据进行实时加密和解密的任务&#xff0c;以确保数据在传输和存储过程中的安全性和完整性。以下是对实时加密机的详细阐述&#xff1a; 一、定义与功能 实时加密机是一种采用先进加密算…

【Azure Redis 缓存】Azure Redis出现了超时问题后,记录一步一步的排查出异常的客户端连接和所执行命令的步骤

问题描述 Azure Redis在使用的过程中&#xff0c;多次无规律的出现超时问题。抓取到客户端的异常错误后&#xff0c;想进一步的分析是何原因导致了如下异常呢&#xff1f; Timeout awaiting response (outbound0KiB, inbound0KiB, 5984ms elapsed, timeout is 5000ms), command…

mysql性能优化- 数据库配置优化

MySQL 性能优化 - 数据库配置优化 MySQL 是一个广泛使用的关系型数据库管理系统&#xff0c;但随着数据量的增长和访问频率的提高&#xff0c;其性能可能会成为瓶颈。为了保持高效的性能&#xff0c;除了应用层的查询优化和索引优化之外&#xff0c;数据库配置优化 也是非常重…

Go-知识-定时器

Go-知识-定时器 1. 介绍2. Timer使用场景2.1 设定超时时间2.2 延迟执行某个方法 3. Timer 对外接口3.1 创建定时器3.2 停止定时器3.3 重置定时器3.4 After3.5 AfterFunc 4. Timer 的实现原理4.1 Timer数据结构4.1.1 Timer4.1.2 runtimeTimer 4.2 Timer 实现原理4.2.1 创建Timer…