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