当前位置:网站首页>LeetCode 648. Word replacement
LeetCode 648. Word replacement
2022-07-07 14:19:00 【Sasakihaise_】


【 Hash + string manipulation 】 take dictionary Put the words in HashSet in , Record the length of words during the addition process , Convenience is right sentence Prefix the words in .
class Solution {
// Hash + String interception 12:41
public String replaceWords(List<String> dictionary, String sentence) {
Set<String> set = new HashSet();
Set<Integer> length = new HashSet();
for (var st: dictionary) {
set.add(st);
length.add(st.length());
}
List<Integer> l = new ArrayList(length);
Collections.sort(l);
String[] strs = sentence.split(" ");
int n = l.size();
StringBuilder sb = new StringBuilder();
for (var str: strs) {
sb.append(" ");
var flag = 0;
for (var i = 0; i < n; i++) {
var m = l.get(i);
if (m >= str.length()) {
break;
} else {
var st = str.substring(0, m);
if (set.contains(st)) {
flag = 1;
sb.append(st);
break;
}
}
}
if (flag == 0) {
sb.append(str);
}
}
return sb.toString().strip();
}
}【 Dictionary tree 】 Yes dictionary Word construction in , Traverse sentence The words in , The prefix that matches first can be returned .
class Solution {
// Dictionary tree 1:15 33
class Trie {
Trie[] map = new Trie[26];
boolean is_end;
}
Trie root = new Trie();
public void add(String str) {
Trie node = root;
for (var i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (node.map[c - 'a'] != null) {
node = node.map[c - 'a'];
} else {
Trie trie = new Trie();
node.map[c - 'a'] = trie;
node = trie;
}
}
node.is_end = true;
}
public String pre(StringBuilder sb, String str) {
Trie node = root;
for (var i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (node.map[c - 'a'] == null) {
return str;
} else {
sb.append(c);
node = node.map[c - 'a'];
if (node.is_end) {
return sb.toString();
}
}
}
return str;
}
public String replaceWords(List<String> dictionary, String sentence) {
for (var str: dictionary) {
add(str);
}
String[] strs = sentence.split(" ");
StringBuilder sb = new StringBuilder();
for (var str: strs) {
sb.append(pre(new StringBuilder(), str));
sb.append(" ");
}
return sb.toString().strip();
}
}【 Dictionary tree + Hash table writing 】
class Solution {
// Dictionary tree 10:05 10:16
class Trie {
Map<Character, Trie> map = new HashMap();
boolean endOfWord = false;
}
Trie root = new Trie();
public void add(String str) {
Trie node = root;
for (var i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (node.map.containsKey(c)) {
node = node.map.get(c);
} else {
Trie trie = new Trie();
node.map.put(c, trie);
node = trie;
}
}
node.endOfWord = true;
}
public String prefix(String str) {
Trie node = root;
StringBuilder sb = new StringBuilder();
for (var i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (node.map.containsKey(c)) {
sb.append(c);
node = node.map.get(c);
if (node.endOfWord) {
return sb.toString();
}
} else {
return str;
}
}
return str;
}
public String replaceWords(List<String> dictionary, String sentence) {
for (var str: dictionary) {
add(str);
}
String strs[] = sentence.split(" ");
for (var i = 0; i < strs.length; i++) {
strs[i] = prefix(strs[i]);
}
return String.join(" ", strs);
}
}
边栏推荐
- Seven propagation behaviors of transactions
- 多商户商城系统功能拆解01讲-产品架构
- Parameter keywords final, flags, internal, mapping keywords internal
- Leetcode——236. 二叉树的最近公共祖先
- 【AI实战】应用xgboost.XGBRegressor搭建空气质量预测模型(二)
- c#通过frame 和 page 切换页面
- Regular expression integer positive integer some basic expressions
- FCOS3D label assignment
- Search engine interface
- The longest ascending subsequence model acwing 482 Chorus formation
猜你喜欢

OAuth 2.0 + JWT protect API security

VSCode 配置使用 PyLint 语法检查器

Mathématiques avancées - - chapitre 8 différenciation des fonctions multivariables 1

Reverse non return to zero code, Manchester code and differential Manchester code of common digital signal coding

Advanced Mathematics - Chapter 8 differential calculus of multivariate functions 1

Did login metamask

用例图

Use case diagram
![GVIM [III] [u vimrc configuration]](/img/82/38355d7914e5fe490546347e57e35d.png)
GVIM [III] [u vimrc configuration]

Selenium Library
随机推荐
手里的闲钱是炒股票还是买理财产品好?
XML文件的解析操作
Mathématiques avancées - - chapitre 8 différenciation des fonctions multivariables 1
Laravel form builder uses
Dry goods | summarize the linkage use of those vulnerability tools
Laravel Form-builder使用
The difference between memory overflow and memory leak
When FC connects to the database, do you have to use a custom domain name to access it outside?
GVIM [III] [u vimrc configuration]
Clickhouse (03) how to install and deploy Clickhouse
wpf dataGrid 实现单行某个数据变化 ui 界面随之响应
Million data document access of course design
Environment configuration
Common response status codes
FCOS3D label assignment
Mrs offline data analysis: process OBS data through Flink job
最长上升子序列模型 AcWing 1012. 友好城市
UML 状态图
Parsing of XML files
mysql ”Invalid use of null value“ 解决方法