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

【算法】串匹配

时间:2017-11-13 00:07:47      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:char   param   style   targe   str   ini   原理   for   bre   

package com.lkb.demo.test;

public class StringTest {
    
    public static void main(String[] args) {
        StringTest test = new StringTest();
        char[] src = {‘c‘,‘d‘,‘d‘,‘c‘,‘d‘,‘c‘};
        char[] target = {‘c‘,‘d‘,‘c‘};
        int index = test.getIndex(src, target);
        System.out.println(index);
        int index2 = test.getIndexByBF(src, target);
        System.out.println(index2);
    }
    
    /**
     * String.indexOf(String str)的原理
     * 串与串之间的比较
     * 1、先找子串的头在目标串中匹配的位置
     * 2、如果找到,再接着比较
     * 3、如果没找到,接着找,知道找遍主串
     * @param src
     * @param target
     * @return
     */
    public int getIndex(char[] src, char[] target){
        char begin = target[0]; //
        int index = -1;
        for(int i=0;i<src.length;i++){
            
            if(src[i] == begin){//找到头
                int beginIndex = i;
                int j = 0;
                while( j < target.length && beginIndex < src.length){
                    if(src[beginIndex] == target[j]){
                        beginIndex++;
                        j++;
                    }
                    else 
                        break;
                }
                if(j == target.length)
                    return (index = i);
            }
        }        
        return index;
    }
    
    /**
     * Brute-Force 暴力匹配
     * 每个字符一一匹配
     * @param src
     * @param target
     * @return
     */
    public int getIndexByBF(char[] src, char[] target){
        int index = -1;
        for(int i=0;i<src.length;){
            int j;
            for(j=0;j<target.length;){
                if (src[i] == target[j]) {//字符匹配
                    i++;
                    j++;
                }else{
                    i++;
                    break;
                }
            }
            if(j == target.length)
                index = i - j;
        }
        
        return index;
    }
    
}

 

【算法】串匹配

标签:char   param   style   targe   str   ini   原理   for   bre   

原文地址:http://www.cnblogs.com/cuglkb/p/7823327.html

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