网易雷火8/14后端折磨笔试
第一道题:遍历x的可能取值,然后统计方案数。
第二题代码:private static Map<String, String> map = new HashMap<>();
#网易雷火2023秋招笔试虐我的瞬间#
第二题代码:private static Map<String, String> map = new HashMap<>();
private static Map<String, String> map = new HashMap<>(); public static void main(String[] args) { Scanner in = new Scanner(System.in); // // 注意 hasNext 和 hasNextLine 的区别 int w = in.nextInt(); in.nextLine(); map.put("#R", "FF0000"); map.put("#G", "00C932"); map.put("#B", "0000FF"); map.put("#K", "000000"); map.put("#Y", "FFFF00"); map.put("#W", "FFFFFF"); map.put("#P", "FF88FF"); while (w-- > 0) { String str = in.nextLine(); Stack<String> stack = new Stack<>(); char[] chars = str.toCharArray(); if (chars.length == 0) continue; int start = 0; boolean p = false; for (int i = 0; i < chars.length; i++) { if (chars[i] == '#') { if (i == chars.length - 1) break; if (chars[i+1] == 'n') { if (start != 0 && !stack.isEmpty() && !getStr(chars, start, i).equals("")) { p = true; System.out.print(getStr(chars, start, i)); System.out.println(" " + stack.peek()); } if (!stack.isEmpty()) stack.pop(); if (!stack.isEmpty()) start = i + 2; else start = 0; i++; continue; } String s = check(chars, i); // System.out.println(s); if (!s.equals("")) { if (start != 0 && !stack.isEmpty() && !getStr(chars, start, i).equals("")) { p = true; System.out.println(getStr(chars, start, i)+" " + stack.peek()); } stack.push(s); if (map.containsKey("#" + chars[i+1])) { start = i + 2; i++; } else { start = i + 8; i += 7; } } } } if (start != 0 && !stack.isEmpty() && !getStr(chars, start, chars.length).equals("")) { p = true; System.out.println(getStr(chars, start, chars.length) + " " + stack.peek()); } if (!p) System.out.println("empty"); } } public static String check(char[] chars, int i) { if (i == chars.length - 1) return ""; char c = chars[i+1]; if (map.containsKey("#" + c)) return map.get("#"+c); if (c == 'C') { if (i + 7 > chars.length) return ""; StringBuilder sb = new StringBuilder(); for (int j = i+2; j <= i + 7; j++) { sb.append(chars[j]); if ((chars[j] >= '0' && chars[j] <= '9') || (chars[j] >= 'A' && chars[j] <= 'F')) continue; else return ""; } return sb.toString(); } return ""; } public static String getStr(char[] chars, int start, int j) { StringBuilder sb = new StringBuilder(); for (int i = start; i < chars.length && i < j; i++) { sb.append(chars[i]); } return sb.toString(); }