• 关于string的indexof方法的试验




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

        对了这个问题,我想基本思路可以采用上面提到的匹配算法,另外使用哈希表将当前子串分解,然后给每个字串一个值,按从长到短开始循环,每循环一次,就拿当前串雨哈希表对照更新次数。
        循环完毕后,就知道每个字串的出现频率。
        这里还有有个问题就是,如果把子串分成很多更小的串,最简单的就是使用循环,生成哈希表。我想的话其中key用来存字串,value存储频率。
        应该还有更好的方法,继续研究。
  • 相关阅读:
    多态
    封装,继承,多态
    基本类型和引用类型的区别
    第七天 面向对象
    什么是Java线程池
    游戏内核架构
    放松
    静不下来心写代码
    速度和正确率
    理顺思路
  • 原文地址:https://www.cnblogs.com/jacky0952/p/indexof.html
Copyright © 2020-2023  润新知