字符串查找问题(Java版)

1. 暴力破解的方法

package com.zkna;

public class StringFindDemo {
    public static void main(String[] args) {
        String s1 = "INAHAYSTACKNEEDLEINA",sc1 = "";
        String s2 = "NEEDLE";
        int N = s1.length();
        int M = s2.length();
        int flag = findStr(s1,s2,N,M);
        if(flag == -1){
            System.out.println("没有找到匹配的字符");
        }else{
            sc1 = s1.replace(s2,"\033[31m" + s2+"\033[30m");
            System.out.print("\033[1;90m出现在位置:\033[30m"+flag+": \033[m");
            System.out.print(sc1);
        }
    }

    public static int findStr(String s1,String s2,int N,int M){
        int flag = -1;
        for(int i = 0;i<=N-M;i++){
            int j = 0;
            for(;j<M;j++){
                if(s1.charAt(i+j)!=s2.charAt(j)){
                    break;
                }
            }
            if(j == M){
                flag = i;
                return flag;
            }
        }
        return flag;
    }

}


你可能感兴趣的:(java)