第三题 用字符串做的 import java.util.Scanner; /* * 模拟一个连续的内存块,其大小固定为100字节: 1.用户输入"REQUEST=10"表示从内存中分配一个连续的大小为10字节的空间,当分配成功时, 输出内存区块的首地址,分配失败(内存空间不足)时输出"error" 2.用户输入“RELEASE=0”,表示释放首地址为0所对应的区块,如果不存在相应区块,则输出“error”,反之不输出 * */ public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // TODO Auto-generated method stub StringBuilder str = new StringBuilder(100); //a 空 b为头 c为体 for(int i=0;i<100;i++) { str.append('a'); } do { String input = sc.next(); if(input.equals("000")) { break; } int num = Integer.parseInt(input.substring(8)); int boo = input.substring(0, 7).equals("REQUEST")?1:0;//1代表存 0代表释放 System.out.println(Solution(num, boo, str)); for(int i=0;i<100;i++) { System.out.print(str.charAt(i)); } System.out.println(); }while(true); } public static String Solution(int num,int boo,StringBuilder str) { if(boo==1) {//分配空间 if(num==1) { int a = str.indexOf("a"); str.setCharAt(a, 'b'); return ""+a; }else { StringBuilder a = new StringBuilder("b"); StringBuilder b = new StringBuilder("a"); for(int i=0;i