美文网首页
另类字符匹配方式

另类字符匹配方式

作者: 小鸡在路上 | 来源:发表于2019-09-21 20:42 被阅读0次

存在一个字符串 ababababc 问是否存在字符串 ababc
普通方式:

    public static int search(String pat,String txt){
        int len = txt.length();
        int pLen = pat.length();
        for(int i=0;i<len-pLen;i++){
            int j = 0;
            for( j=0;j<pLen;j++){
                if(pat.charAt(j) != txt.charAt(i+j)){
                    break;
                }
            }
            if(j == pLen) return i;
        }
        return -1;

    }
    
    public static void main(String[] args) {
        String pat = "ababc";
        String txt = "ababababc";
        System.out.println(search(pat, txt));
    }

第二种方式:

 public class KMP2 {
   private int[][] dp;
   private String pat;

   // 构建dp数组
   public KMP2(String pat){
       int m = pat.length();
       this.pat = pat;
       this.dp = new int[m][256];
       dp[0][pat.charAt(0)] = 1;
       int x = 0;
       for(int i=1;i<m;i++){
           for(int j=0;j<256;j++){
               if(pat.charAt(i) == j){
                   dp[i][j] = i+1;
               }else{
                   dp[i][j] = dp[x][j];
               }
           }
           x = dp[x][pat.charAt(i)];
       }
   }

   public int serach(String txt){
       int len = txt.length();
       int j =0;
       for(int i=0;i<len;i++){
           j = dp[j][txt.charAt(i)];
           if(j == pat.length()) return i-pat.length()+1;
       }
       return -1;
   }

    public static void main(String[] args) {
        KMP2 kmp2 = new KMP2("ababc");
        System.out.println(kmp2.serach("ababababc1111"));
    }

}

相关文章

  • 另类字符匹配方式

    存在一个字符串 ababababc 问是否存在字符串 ababc普通方式: 第二种方式:

  • [Neo4J] 字符串匹配 Cypher查询语言(CQL) 语法

    字符串匹配的几种方式

  • 正则表达式

    单字符匹配 多字符匹配 边界匹配 分组匹配

  • 正则表达式

    1.常用正则匹配符号 1.字符:匹配单个字符 a:表示匹配字符a; \:匹配转义字符

  • Regex的元字符总结

    匹配单个字符的元字符 | 元字符 | 匹配对象--- | --- | ---. | 点号 | 匹配单个任意字符[ ...

  • 正则

    单字符匹配 多字符匹配

  • 第十六章 Phton3_正则模块(标准库)

    常用特殊字符匹配内容 字符匹配: 正则特殊字符匹配内容.匹配除换行符(\n)以外的单个任意字符\w匹配单个字母、数...

  • 正则表达式

    常见匹配模式 字符功能单字符匹配规则.匹配任意1个字符(除了\n)[]匹配[]中列举的字符\d匹配数字,也就是0-...

  • 正则

    数量 多字符匹配(表示数量) 单字符匹配(表示字符) 表示边界 非贪婪匹配 修饰符可以匹配任意个字符,包括0个字符...

  • 正则表达式

    1.匹配两个特殊字符之间的字符,并带上匹配的特殊字符 2.匹配两个特殊字符之间的字符,并不带匹配的特殊字符(前端使...

网友评论

      本文标题:另类字符匹配方式

      本文链接:https://www.haomeiwen.com/subject/awbeuctx.html