java 算法实现字符串的匹配

import org.junit.Test;
 
/**
 * 一个子字符串在字符串中的匹配
 * @author yachao
 */
public class TestRegx {
    @Test
    public void getTest(){
        String str = "12123";
        String subStr = "123";
        int start = test(str,subStr);
        System.out.println("第一个开始的位置在第 "+(start+1)+" 个字符");
    }
    public int test(String str,String subStr){
        char[] strChar = str.toCharArray();
        char[] subStrChar = subStr.toCharArray();
        Integer start = null;
        boolean flag = false;
        for(int i=0;i<strChar.length&&flag==false;i++){
            int mark = 0;
            for(int j=0;j<subStrChar.length;j++){
                if(i+mark<strChar.length&&strChar[i+mark]==subStrChar[j]){
                    mark++;
                }else{
                    break;
                }
                if(mark == subStrChar.length){
                    flag = true;
                    start = i;
                    break;
                }
            }
        }
        return start == null ?-1:start;
    }
}

输出的结果是:第一个开始的位置在第 3 个字符。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容