每8✖8是一个局面,一共是n个局面,遍历这n个局面,判断当前局面在之前出现过几次
没出现过标为1 表示第一次出现
而不是新建一条记录
import java.util.*;
public class Main1 {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<>();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int index = 0;
int[] ans = new int[n];
for (int j = 0; j < n; j++) { //一共n个局面
StringBuilder sbBuilder = new StringBuilder();
for (int i = 0; i < 8; i++) { //8行拼成一个局面
sbBuilder.append(sc.next());
}
int num = map.getOrDefault(sbBuilder.toString(), 0);
//用num判断map里存了没有 如果没存,num为0;存了就是存的个数
ans[index++] = num + 1; //用ans额外记录当前局面在之前出现过几次(没存就是第一次出现 ans里存1)
map.put(sbBuilder.toString(), num + 1);
//把当前局面存到map里 如果num为0,则代表没有这样的key,会新增一条;如果num不为0 出现次数就加1
}
for (int content : ans) {
System.out.println(content);
}
}
}
ps: 这题用HashMap和LinkedHashMap都可以,区别是前者存放无序,后者有序;在我的解法里,与顺序无关,因此都可。
因篇幅问题不能全部显示,请点此查看更多更全内容
怀疑对方AI换脸可以让对方摁鼻子 真人摁下去鼻子会变形
女子野生动物园下车狼悄悄靠近 后车司机按喇叭提醒
睡前玩8分钟手机身体兴奋1小时 还可能让你“变丑”
惊蛰为啥吃梨?倒春寒来不来就看惊蛰
男子高速犯困开智能驾驶出事故 60万刚买的奔驰严重损毁