Web系统通常会频繁地访问数据库,如果每次访问都创建新连接,性能会很差。为了提高性能,架构师决定复用已经创建的连接。当收到请求,并且连接池中没有剩余可用的连接时,系统会创建一个新连接,当请求处理完成时该连接会被放入连接池中,供后续请求使用。
现在提供你处理请求的日志,请你分析一下连接池最多需要创建多少个连接。
输入包含多组数据,每组数据第一行包含一个正整数n(1≤n≤1000),表示请求的数量。
紧接着n行,每行包含一个请求编号id(A、B、C……、Z)和操作(connect或disconnect)。
对应每一组数据,输出连接池最多需要创建多少个连接。
6 A connect A disconnect B connect C connect B disconnect C disconnect
2
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ int n = sc.nextInt(); Set<String> s = new HashSet<>(); int max_count = 0; while(n != 0){ String id = sc.next(); String op = sc.next(); if(op.equals("connect")){ s.add(id); }else{ s.remove(id); } max_count = Math.max(max_count,s.size()); n--; } System.out.println(max_count); } } }
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); while(scanner.hasNextLine()){ String strNum = scanner.nextLine(); int num = Integer.parseInt(strNum); int count = 0; int maxCount = 0; while(num-- != 0){ String str = scanner.nextLine(); if(!str.contains("disconnect")){ count++; }else{//那就是connect maxCount = count > maxCount ? count : maxCount; count--; } } System.out.println(maxCount); } } }只要出现discnnonet那就将当前count次数和maxCount次数进行比较,maxCount存储最大连接池个数
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ int n = sc.nextInt(); int size = 0; int max = 0; for(int i = 0;i < n;i++){ String id = sc.next(); String s = sc.next(); if(s.equals("connect")){ size++; max = Math.max(max,size); }else if(s.equals("disconnect")){ size--; } } System.out.println(max); } } }
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ int n = Integer.parseInt(sc.nextLine()); String[] str = new String[n]; Stack<String> stack = new Stack<>(); int max = 0; for(int i = 0; i < n; i++){ str[i] = sc.nextLine(); if(!str[i].contains("disconnect")){ stack.push(str[i]); max = Math.max(max, stack.size()); } else{ stack.pop(); } } System.out.println(max); } } }