201509-3 模版生成系統
阿新 • • 發佈:2018-12-09
使用hashmap來儲存變數和它對應的值,使用Pattern來匹配{{ var }}模式的字串,個人感覺這道題用正則表示式很簡便。
奉上java滿分程式碼
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); String[] firstLine = scanner.nextLine().split(" "); int n = Integer.parseInt(firstLine[0]); int m = Integer.parseInt(firstLine[1]); List<String> lines = new ArrayList<>(); for(int i = 0; i < n; i++){ lines.add(scanner.nextLine()); } HashMap<String, String> hashMap = new HashMap<>(); for(int i = 0; i < m; i++){ String line = scanner.nextLine(); int index = line.indexOf("\""); String key = line.substring(0, index - 1); String val = line.substring(index + 1, line.length() - 1); hashMap.put(key, val); } scanner.close(); Pattern pattern = Pattern.compile("\\{\\{ ([0-9a-zA-z_]+) \\}\\}"); Matcher matcher; for(String line : lines){ matcher = pattern.matcher(line); while (matcher.find()){ String group = matcher.group(0); String key = matcher.group(1); if(hashMap.containsKey(key)){ line = line.replace(group, hashMap.get(key)); } else{ line = line.replace(group, ""); } } System.out.println(line); } } }