leetcode 1023. Camelcase Matching
使用前缀树, 多个字符串匹配一个模式
function Node() {
this.children = {}
}
class Trie {
constructor() {
this.root = new Node()
}
insert(word) {
var node = this.root;
for (let c of word) {
if (!node.children[c]) {
node.children[c] = new Node
}
node = node.children[c]
}
node.word = word;
}
search(word) {
var hash = {}
innerSearch(this.root, word, 0, true, hash)
return hash;
}
}
function innerSearch(node, word, index, value, hash) {
if (node.word) {
if (index >= word.length) {
hash[node.word] = value;
} else {
hash[node.word] = false
}
}
var a = word[index]
for (let c in node.children) {
if (c === a) { //都是大写或小写,并且字母一样
innerSearch(node.children[c], word, index + 1, value, hash)
} else {
var code = c.charCodeAt(0)
if (code >= 65 && code <= 90) {
innerSearch(node.children[c], word, index, false, hash)
} else {
innerSearch(node.children[c], word, index, value, hash)
}
}
}
return true
}
function camelMatch(queries, pattern) {
let trie = new Trie
for (let word of queries) {
trie.insert(word)
}
let hash = trie.search(pattern)
let ret = []
for (let word of queries) {
ret.push(hash[word])
}
console.log(ret)
return ret;
}
camelMatch(["FooBar", "FooBarTest", "FootBall", "FrameBuffer", "ForceFeedBack"], 'FB')
camelMatch(["FooBar", "FooBarTest", "FootBall", "FrameBuffer", "ForceFeedBack"], 'FoBa')
camelMatch(["FooBar", "FooBarTest", "FootBall", "FrameBuffer", "ForceFeedBack"], 'FBT')
如果您觉得此文有帮助,可以打赏点钱给我支付宝1669866773@qq.com ,或扫描二维码


机器瞎学/数据掩埋/模式混淆/人工智障/深度遗忘/神经掉线/计算机幻觉/专注单身二十五年
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
2014-12-31 2014年的年终总结