第五屆ccf認證考試第三題
題目:
成成最近在搭建一個網站,其中一些頁面的部分內容來自資料庫中不同的資料記錄,但是頁面的基本結構是相同的。例如,對於展示使用者資訊的頁面,當用戶為 Tom 時,網頁的原始碼是 而當用戶為 Jerry 時,網頁的原始碼是 這樣的例子在包含動態內容的網站中還有很多。為了簡化生成網頁的工作,成成覺得他需要引入一套模板生成系統。
模板是包含特殊標記的文字。成成用到的模板只包含一種特殊標記,格式為 {{ VAR }},其中 VAR 是一個變數。該標記在模板生成時會被變數 VAR 的值所替代。例如,如果變數 name = “Tom”,則 {{ name }} 會生成 Tom。具體的規則如下:
.變數名由大小寫字母、數字和下劃線 (_) 構成,且第一個字元不是數字,長度不超過 16 個字元。
·變數名是大小寫敏感的,Name 和 name 是兩個不同的變數。
·變數的值是字串。
·如果標記中的變數沒有定義,則生成空串,相當於把標記從模板中刪除。
·模板不遞迴生成。也就是說,如果變數的值中包含形如 {{ VAR }} 的內容,不再做進一步的替換。
輸入格式
輸入的第一行包含兩個整數 m, n,分別表示模板的行數和模板生成時給出的變數個數。
接下來 m 行,每行是一個字串,表示模板。
接下來 n 行,每行表示一個變數和它的值,中間用一個空格分隔。值是字串,用雙引號 (“) 括起來,內容可包含除雙引號以外的任意可列印 ASCII 字元(ASCII 碼範圍 32, 33, 35-126)。
輸出格式
輸出包含若干行,表示模板生成的結果。
樣例輸入
11 2
<!DOCTYPE html>
<html>
<head>
<title>User {{ name }}</title>
</head>
<body>
<h1>{{ name }}</h1>
<p>Email: <a href="mailto:{{ email }}">{{ email }}</a></p>
<p>Address: {{ address }} </p>
</body>
</html>
name "David Beckham"
email "[email protected]"
樣例輸出
<!DOCTYPE html>
<html>
<head>
<title>User David Beckham</title>
</head>
<body>
<h1>David Beckham</h1>
<p>Email: <a href="mailto:[email protected] ">[email protected]</a></p>
<p>Address: </p>
</body>
</html>
評測用例規模與約定
0 ≤ m ≤ 100
0 ≤ n ≤ 100
輸入的模板每行長度不超過 80 個字元(不包含換行符)。
輸入保證模板中所有以 {{ 開始的子串都是合法的標記,開始是兩個左大括號和一個空格,然後是變數名,結尾是一個空格和兩個右大括號。
輸入中所有變數的值字串長度不超過 100 個字元(不包括雙引號)。
保證輸入的所有變數的名字各不相同。
答案:
import java.util.HashMap;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
HashMap map = new HashMap();
int m = sc.nextInt() + 1;
int n = sc.nextInt() + 1;
StringBuffer sb = new StringBuffer(sc.nextLine());
while (--m != 0) {
sb.append(sc.nextLine() + "\n");
}
while (--n != 0) {
String str = sc.nextLine();
String[] strs = str.split(" ");
String str1 = String.valueOf(strs[1].toCharArray(), 1, strs[1]
.toCharArray().length - 2);
map.put(strs[0], str1);
}
int brkNum = 0;
int brkNum2 = 0;
boolean prtAble = true;
StringBuffer buff = new StringBuffer();
for (char c : sb.toString().toCharArray()) {
if (c == '{') {
brkNum++;
prtAble = false;
if (brkNum == 2)
continue;
}
if (c == '}') {
brkNum = 0;
brkNum2++;
if (brkNum2 == 2) {
continue;
}
}
if (brkNum2 == 2) {
brkNum2 = 0;
prtAble = true;
String s = (String) map.get(buff.toString().trim());
if (s == null)
s = "";
System.out.print(s);
buff = new StringBuffer();
}
if (brkNum == 3) {
System.out.print("{{{");
brkNum = 0;
prtAble = true;
continue;
}
if (prtAble)
System.out.print(c);
else {
if (brkNum == 2)
buff.append(c);
}
}
}
}
以上程式碼為自己寫,僅供參考
相關推薦
第五屆ccf認證考試第三題
題目: 成成最近在搭建一個網站,其中一些頁面的部分內容來自資料庫中不同的資料記錄,但是頁面的基本結構是相同的。例如,對於展示使用者資訊的頁面,當用戶為 Tom 時,網頁的原始碼是 而當用戶為 Jerry 時,網頁的原始碼是 這樣的例子在包含動態內容的網站中
第五屆CCF認證C++(題號A)
輸入的第一行包含兩個整數n, m,分別表示影象矩陣的行數和列數。 接下來n行每行包含m個整數,表示輸入的影象。 評測用例規模與約定 1 ≤ n, m ≤ 1,000,矩陣中的數都是不超過1000的非負整數。
第五屆CCF計算機職業資格認證考試題解(C++)
試題名稱: 數列分段 試題編號: 201509-1 時間限制: 1.0s 記憶體限制: 256.0MB 問題描述 給定一個整數數列,數列中連續相同的最長整數序列算成一段,問數列中共有多少段? 輸入格式 輸入的第一行包
第五屆計算機職業資格認證考試CCF (第一題)
2015-09-01 問題描述 給定一個整數數列,數列中連續相同的最長整數序列算成一段,問數列中共有多少段? 輸入格式 輸入的第一行包含一個整數n,表示數列中整數的個數。 第二行包含n個
CCF csp第九次認證考試 試題三 許可權查詢
(一)題目要求 參考一篇C語言實現的博文,用java實現,經測試,結果正確,若有沒考慮到的地方,請各位博友指正 問題描述 授權 (authorization) 是各類業務系統不可缺少的組成部分,系統使用者通過授權機制獲得系統中各個模組的操作許可權。
第六屆CCF計算機職業資格認證考試題解(C++)
試題名稱 數位之和 時間限制: 1.0s 記憶體限制: 256.0MB 問題描述 給定一個十進位制整數n,輸出n的各位數字之和。 輸入格式 輸入一個整數n。 輸出格式 輸出一個整數,表示答案。 樣例輸入
C#認證考試第三章
pac png strip form ips pub 選擇 背景 第三章 ps:因為前面請假,沒能在規定時間做出總結,現在補上 如果你看了第三章的內容,你會發現第三章在著重跟我們講解對Windows窗體的設計,其中包括窗體背景、前景色、字體顏色、位
第十次CCF認證 第三題 Markdown 字串處理
Markdown 是一種很流行的輕量級標記語言(lightweight markup language),廣泛用於撰寫帶格式的文件。例如以下這段文字就是用 Markdown 的語法寫成的: 這些用 Markdown 寫成的文字,儘管本身是純文字格式,然而讀者可以很容易地看出
備戰藍橋杯(真題)第五屆第三題(迴文素數)
迴文素數10301是個5位的素數。它有個特點,把數字倒過來還是它本身,具有這樣特徵的素數,我們稱之為:迴文素數。105011060111311這些都是5位的迴文素數。請你計算一下,像這樣的5位數的迴文素數,
第六次CCF計算機軟體能力認證考試(第四題)
問題描述 某國有n個城市,為了使得城市間的交通更便利,該國國王打算在城市之間修一些高速公路,由於經費限制,國王打算第一階段先在部分城市之間修一些單向的高速公路。 現在,大臣們幫國王擬了一
CCF CSP第十一次認證考試 20170917
第一題: 買醬油,買五瓶送兩瓶,買三瓶送一瓶。10元/瓶。給出錢數,問最多能買多少瓶醬油。 第二題:教師取放鑰匙,結構體排序,過載運算子。 第三題:檔案操作,字串處理,查詢。 第四題:有向圖的搜尋。能達到點v的點數 + 點v可達到的點數 == 總點數n - 1。詢問有多少個
2014第五屆藍橋杯JAVA本科B組試題第三題猜字母
把abcd...s共19個字母組成的序列重複拼接106次,得到長度為2014的串。 接下來刪除第1個字母(即開頭的字母a),以及第3個,第5個等所有奇數位置的字母。 得到的新串再進行刪除奇數位置字母的動作。如此下去,最後只剩下一個字母,請寫出該字母。答案是一個小寫
小朋友排隊--第五屆藍橋杯
code als ann 沒有 clas art 相對 pri rgs 第一種,直接思考的方法,不知對不正確: /* * 標題:小朋友排隊 n 個小朋友站成一排。如今要把他們按身高從低到高的順序排列,可是每次僅僅能交換位置相鄰的兩個小朋友。 每一個小朋友都有一個
算法筆記_206:第五屆藍橋杯軟件類決賽真題(Java語言A組)
理論 cnblogs 條件 font 9.png 生成 true 突變 幻方 目錄 1 海盜分金幣 2 六角幻方 3 格子放雞蛋 4 排列序數 5 冪一矩陣 6 供水設施 1 海盜分金幣 有5個海盜,相約進行一次帆船比賽。 比賽中天氣發生突變,他們被沖
賀一夫補選為永州市第五屆人民代表大會代表o0
ddp pvc nap llc gym olt cs6 waf ner 賀一夫補選為永州市第五屆人民代表大會代表http://r393j9.zfohn.cn/http://op57mc.zfohn.cn/http://h6329v.zfohn.cn/http://e3n9m
2017第五屆中國(河南)創業者大會成功落幕
搭建 交流 表示 共享 創新創業 前行 http 大會 總經理 “河南的創業者,世界的大會”!2017年10月14日,由鄭州市景安網絡科技股份有限公司協辦的2017第五屆中國(河南)河南創業者大會,在萬眾期待中迎來了盛大開幕! 本屆大會,全國共享經濟領域優秀企業代表、創投
第五屆藍橋杯總結
amp 說明文 tro ... 註意 家裏 例如 多少 .... 第一題 啤酒和飲料 啤酒每罐2.3元,飲料每罐1.9元。小明買了若幹啤酒和飲料,一共花了82.3元。 我們還知道他買的啤酒比飲料的數量少,請你計算他買了幾罐啤酒。 註意:答案是一個整數。請
第五屆藍橋杯大賽個人賽(軟件類)省賽真題
turn 滿足 方法 省賽 left n-1 遊戲 藍橋杯 0ms 第一題 輸入一個字符串,求它包含多少個單詞。單詞間以一個或者多個空格分開。第一個單詞前,最後一個單詞後也可能有0到多個空格。比如:" abc xyz" 包含兩個單詞,"ab c xyz
NYOJ 542 試制品(第五屆河南省省賽)
ret 找到 stream 同時 利用 CA tor for space 解法不唯一,但是還是set好理解而且用著爽,代碼註釋應該夠詳細了 #include<stdio.h> #include<string.h> #include<math.
藍橋杯 - 歷屆試題(第五屆) - 蘭頓螞蟻(模擬)
http://lx.lanqiao.cn/problem.page?gpid=T125 時間限制:1.0s 記憶體限制:256.0MB 問題描述 蘭頓螞蟻,是於1986年,由克里斯·蘭頓提出來的,屬於細胞自動機的一種。 平面上的正方形格子被填上黑色或白色。在其