logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【KMP算法-下篇】同一道题:Java 库函数 2600 微秒,手写 KMP 16 微秒

给你两个字符串,要你回答第二个在第一个里第一次出现的位置,从 0 开始数。查不到就返回 -1。题目保证第二个串至少有一个字符。这种题一行代码就能完成:Java 有,C++ 和 Python 也各有现成的find。可这些现成的函数,跑起来不一定比手写的快。手写的版本,就是上篇和中篇讲的那套 KMP。这篇讲两件事:它快在哪里,以及同一套 KMP 还能解另一道看起来毫不相干的题。

#算法#java#开发语言
【KMP算法-中篇】next 数组的递推:往前填一位,靠的是往回退几步

两趟加起来:算 next 数组 O(m),匹配 O(n),整趟就是 O(n + m)。单看某一个位置,它可能要退好几次。可 m 个位置放在一起算,总共只有 O(m),摊到每个位置上,平均就是常数级。上篇里最直接的做法,O(n × m),到这儿就压下来了。原理讲完了。下一篇看题,两道能直接用上 KMP 的题。

#算法
【KMP算法-上篇】匹配失败之后,KMP 凭什么敢一次跳过一大段

给两个字符串 S1 和 S2,问 S1 里有没有 S2,有的话返回它出现的最左位置,没有就返回 -1。这个问题叫。最直接的做法,是把 S1 的每个位置都当成起点试一遍。拿 S1 = “ABCD”、S2 = “CD” 来说:从 0 位置开始,A 对 C 对不上,换 1 位置;B 对 C 还是对不上,换 2 位置;这次 C 对 C、D 对 D 都对上了,返回 2。要是 S2 是 “CDE”,整个 S1

#算法#java#服务器
我终于搞明白了:为什么 Agent 总会跑着跑着就废掉

面对记忆丢失问题,很多人想到的补救方案是:把旧会话的内容总结成摘要,再传递给下一个 Agent。这个思路直觉上很合理,但在代码工程场景下几乎是灾难性的。设想一下:你将 10 万行调试日志压缩成了 500 字的摘要,告诉接班工程师"上周修了个变量 bug"。他获得了什么?是一句话的描述。他丢失了什么?是完整的变量命名体系、版本依赖关系、调试路径,以及大量隐性约定。在软件工程的世界里,少一处依赖声明,

#数据库#人工智能
Agent Skill 和 MCP,到底有什么区别?

做 AI 应用开发,经常会遇到两个概念:Agent Skill 和 MCP(Model Context Protocol)。虽然都是让 AI 能调用工具,但它们根本不是一个维度的东西。简单来说:Skill是 Agent 内部的能力封装与编排,MCP 是工具能力的标准化接入协议。

#人工智能#AIGC
到底了