码迷,mamicode.com
首页 > 编程语言 > 详细

串的模式匹配算法

时间:2018-02-23 23:52:31      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:朴素   否则   index   数据   rate   markdown   blog   bst   system   

尴尬啊,大学数据结构课程用的书看到了现在。说起来这本书在业内也是相当有名,它就是清华大学出版社出版的《数据结构(C语言版)》。在该书的 4.3 节,讲解了“串的模式匹配算法”,个人感觉这一节应该是前四章最值得看的一节了。下面就说说相关算法的爪哇实现吧!

简单粗暴

首先,肯定还是说最简单最暴力的方法喽,没废话就是从前向后遍历:

/**
 * Cerated by clearbug on 2018/2/23.
 *
 * 串的模式匹配算法
 */
public class SubStrMatcher {

    public static void main(String[] args) {
        System.out.println(indexForce("ababcabcacbab", "abcac", 5));
        System.out.println(indexForce("00000000000000000000000000000000000000000000000001", "0000000001", 0));
    }

    /**
     * 朴素字符串匹配算法
     *
     * @param s 主串
     * @param t 模式串
     * @param pos 匹配操作起始位置
     * @return 若模式串匹配不成功,则返回 -1;否则,返回主串中第一次匹配成功的子串的索引值;
     */
    public static int indexForce(String s, String t, int pos) {
        char[] sArr = s.toCharArray();
        char[] tArr = t.toCharArray();

        int sLen = sArr.length;
        int tLen = tArr.length;
        int i = pos, j = 0;
        while (i < sLen && j < tLen) {
            if (sArr[i] == tArr[j]) {
                i++;
                j++;
            } else {
                i = i -j + 1;
                j = 0;
            }
        }
        if (j == tLen) { // 匹配成功了
            return i - j;
        }
        return -1;
    }
}

优雅点

串的模式匹配算法

标签:朴素   否则   index   数据   rate   markdown   blog   bst   system   

原文地址:https://www.cnblogs.com/optor/p/8463490.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!