🚀 算法題 🚀 |
🌲 算法刷題專欄 | 面試必備算法 | 面試高頻算法 🍀
🌲 越難的東西,越要努力堅持,因為它具有很高的價值,算法就是這樣?
🌲 作者簡介:碩風和煒,CSDN-Java領域新星創作者🏆,保研|國家獎學金|高中學習JAVA|大學完善JAVA開發技術棧|面試刷題|面經八股文|經驗分享|好用的網站工具分享💎💎💎
🌲 恭喜你發現一枚寶藏博主,趕快收入囊中吧🌻
🌲 人生如棋,我愿為卒,行動雖慢,可誰曾見我后退一步?🎯🎯
🚀 算法題 🚀 |
🍔 目錄
- 🚩 題目鏈接
- ? 題目描述
- 🌟 求解思路&實現代碼&運行結果
- ? 字符串處理+庫函數
- 🥦 求解思路
- 🥦 實現代碼
- 🥦 運行結果
- ? 模擬+哈希表+字符串
- 🥦 求解思路
- 🥦 實現代碼
- 🥦 運行結果
- 💬 共勉
🚩 題目鏈接
- 1410. HTML 實體解析器
? 題目描述
「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 字符中的任意字符。
🌟 求解思路&實現代碼&運行結果
? 字符串處理+庫函數
🥦 求解思路
- 直接調用replaceAll的替換函數,但是需要注意一點的是,"&“替換”&“要放到最后進行,如果之前替換了,那么很有可能替換后的”&"與其它的單詞組成要可以繼續替換的單詞,繼續進行替換,從而最終的結果發生改變。
- 具體實現代碼如下:
🥦 實現代碼
class Solution {public String entityParser(String text) {text=text.replaceAll(""","\"");text=text.replaceAll("'","'");text=text.replaceAll(">",">");text=text.replaceAll("<","<");text=text.replaceAll("⁄","/");text=text.replaceAll("&","&");return text;}
}
🥦 運行結果
? 模擬+哈希表+字符串
🥦 求解思路
- 提前通過Hash表記錄替換的映射,模擬遍歷,從"&“開始,”;'"結束,找到要被替換的單詞,通過映射表返回替換的單詞,最后通過StringBuilder進行快速拼接。
- 具體實現代碼如下:
🥦 實現代碼
class Solution {public String entityParser(String text) {HashMap<String,String> map=new HashMap<>(){{put(""", "\"");put("'", "'");put("&", "&");put(">", ">");put("<", "<");put("⁄", "/");}};int n=text.length();StringBuilder sb=new StringBuilder();for(int i=0;i<n;i++){char c=text.charAt(i);if(c=='&'){int start=i;while(i<n&&text.charAt(i)!=';') i++;String str=text.substring(start,Math.min(i+1,n));if(map.containsKey(str)){sb.append(map.get(str));}else{i=start;sb.append(c);}}else{sb.append(c);}}return sb.toString();}
}
🥦 運行結果
💬 共勉
最后,我想和大家分享一句一直激勵我的座右銘,希望可以與大家共勉! |