惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Simon Willison's Weblog
Simon Willison's Weblog
G
Google Developers Blog
Spread Privacy
Spread Privacy
I
InfoQ
V
V2EX
S
Schneier on Security
小众软件
小众软件
C
CERT Recently Published Vulnerability Notes
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
L
Lohrmann on Cybersecurity
Recent Announcements
Recent Announcements
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Attack and Defense Labs
Attack and Defense Labs
云风的 BLOG
云风的 BLOG
The Hacker News
The Hacker News
S
SegmentFault 最新的问题
C
Cybersecurity and Infrastructure Security Agency CISA
NISL@THU
NISL@THU
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
Latest news
Latest news
S
Secure Thoughts
Project Zero
Project Zero
MongoDB | Blog
MongoDB | Blog
I
Intezer
Security Latest
Security Latest
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
N
Netflix TechBlog - Medium
V2EX - 技术
V2EX - 技术
量子位
T
Threatpost
T
The Blog of Author Tim Ferriss
Y
Y Combinator Blog
T
Tor Project blog
A
Arctic Wolf
Microsoft Security Blog
Microsoft Security Blog
T
The Exploit Database - CXSecurity.com
大猫的无限游戏
大猫的无限游戏
T
Tailwind CSS Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
C
Check Point Blog
博客园 - Franky
Google DeepMind News
Google DeepMind News
The Register - Security
The Register - Security
The GitHub Blog
The GitHub Blog
L
LINUX DO - 热门话题

博客园 - 沧海一声笑

关于UltraWinGrid选中行只读设置 关于chrome 插件PageMonitor 安装及使用步骤 关于UNICODE字符串的匹配问题 关于字符串效率问题 C# 字符转ASCII码,ASCII码转字符 [转一下] 抉择 随记一下 关于域用户的AD验证 关于命令模式的一些理解 关于异步委托的部分理解 基于深度优先搜索的蜘蛛程序 观察者模式的简单实现与讨论 下拉框自动回发! 国庆前生活学习计划 2007年总结 看完色戒有感 年前工作计划 Psytopic性格测试! 求助? 关于购买开发用途笔记本的配置 及推荐品牌和型号! 谢谢! 转帖:真爱 就不要等
关于string的indexof方法的试验
沧海一声笑 · 2009-08-14 · via 博客园 - 沧海一声笑

    string的index方法,在字符串的操作上还是用的比较多的,但是内部的如何实现呢,这个具体用那种算法就不太清楚了。
正好碰到网上一篇关于字符串搜索文章 ,作者提供了一个检索的思路,我就偷懒学习一下,呵呵。
    大致的问题原型是就是indexof的实现问题
    基本思路按照子串在原串中检索,如果遇到不匹配的情况,按照具体算法移动子串位置,一般就是移动一个字符的位置,但是那篇文章的作者提供了一个好的思路,如下图:
   
    1 循环主串,如果匹配则返回。
        否则定位当前主串长度和字串对齐后的第一个字符,如上图中打红圈的字符,
       判断改字符在子串中是否含有,
       如果没有就然后移动子串到该位置,然后循环匹配,如果匹配不成功,继续前一个过程。
       如果含有,如上图中最后的字符u,则子串往前移动子串长-该字符在子串中位置,然后开始匹配,如果不成功继续前一个过程!
       直到主串循环完毕!
    我大致看了一下,其中比较的次数比常规方法还是少了很多!
    另外还有一些类似的问题,比如子串在主串中连续出现次数最多的匹配,大致意思:部分匹配度,也就是说大致匹配的程度。
    最满意的情况是 存在完全匹配,最差的情况是连单个字符都不匹配。

    对了这个问题,我想基本思路可以采用上面提到的匹配算法,另外使用哈希表将当前子串分解,然后给每个字串一个值,按从长到短开始循环,每循环一次,就拿当前串雨哈希表对照更新次数。
    循环完毕后,就知道每个字串的出现频率。
    这里还有有个问题就是,如果把子串分成很多更小的串,最简单的就是使用循环,生成哈希表。我想的话其中key用来存字串,value存储频率。
    应该还有更好的方法,继续研究。