1. 題目
「HTML 實體解析器」 是一種特殊的解析器,它将 HTML 代碼作為輸入,并用字元本身替換掉所有這些特殊的字元實體。
HTML 裡這些特殊字元和它們對應的字元實體包括:
雙引号:字元實體為 " ,對應的字元是 " 。
單引号:字元實體為 ' ,對應的字元是 ' 。
與符号:字元實體為 & ,對應對的字元是 & 。
大于号:字元實體為 > ,對應的字元是 > 。
小于号:字元實體為 < ,對應的字元是 < 。
斜線号:字元實體為 ⁄ ,對應的字元是 / 。
複制
給你輸入字元串 text ,請你實作一個 HTML 實體解析器,傳回解析器解析後的結果。
示例 1:
輸入:text = "& is an HTML entity but &ambassador; is not."
輸出:"& is an HTML entity but &ambassador; is not."
解釋:解析器把字元實體 & 用 & 替換
示例 2:
輸入:text = "and I quote: "...""
輸出:"and I quote: \"...\""
示例 3:
輸入:text = "Stay home! Practice on Leetcode :)"
輸出:"Stay home! Practice on Leetcode :)"
示例 4:
輸入:text = "x > y && x < y is always false"
輸出:"x > y && x < y is always false"
示例 5:
輸入:text = "leetcode.com⁄problemset⁄all"
輸出:"leetcode.com/problemset/all"
提示:
1 <= text.length <= 10^5
字元串可能包含 256 個ASCII 字元中的任意字元。
複制
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/html-entity-parser
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- 周遊text,遇到
開始累積字元,遇到&
結束累積,查找該單詞在哈希表中與否,在則進行替換;
class Solution {
public:
string entityParser(string text) {
unordered_map<string,string> m = {{""","\""},{"'","'"},{"&","&"},
{">",">"},{"<","<"},{"⁄","/"}};
string word;
string ans;
for(int i = 0; i < text.size(); ++i)
{
if(text[i] != '&')
ans += text[i];
else
{
word = "";
while(i < text.size())
{
word += text[i];
if(text[i]==';')
break;
i++;
}
if(m.count(word))
ans += m[word];
else
ans += word;
}
}
return ans;
}
};
複制
288 ms 19.2 MB