未解决runtime error
有时间再来解决
即坑点
在输入时可能000出现在字段末尾但又不是结束小节,需要额外进行处理。
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
String s=sc.nextLine();
HashMap<String, Character> map = new HashMap<String,Character>();
int len=1;
int count=0;
for (int i = 0; i < s.length(); i++) {
String s1=Integer.toBinaryString(count);
String zero="";
for (int j = 0; j < len-s1.length(); j++) {
zero+="0";
}
s1=zero+s1;
map.put(s1, s.charAt(i));
count++;
if(count==(Math.pow(2, len)-1)) {
len++;
count=0;
}
}
String s2="";
while(true) {
String temp=sc.nextLine();
s2+=temp;
if(temp.substring(temp.length()-3, temp.length()).equals("000")) {
break;
}
}
int code_len_start=0;
while(true) {
if(s2.substring(code_len_start,code_len_start+3).equals("000")) {
System.out.println();
break;
}
int code_len=Integer.parseInt(s2.substring(code_len_start,code_len_start+3),2);
String code_end=Integer.toBinaryString((1<<code_len)-1);
for (int i = code_len_start+3; ; i+=code_len) {
String cur=s2.substring(i,i+code_len);
if(cur.equals(code_end)) {
code_len_start=i+code_len;
break;
}
System.out.print(map.get(cur));
}
}
}
}
}