BF算法
import java.util.ArrayList;
import java.util.List;
public class BfMath {
/**
* //串一中包含几个串二,在串一中的起始地址
* @param str1
* @param str2
* @return
*/
public static List<Integer> indexOfStr(String str1,String str2){
char [] charArray=str1.toCharArray();
char [] charArray1=str2.toCharArray();
List<Integer> list=new ArrayList<Integer>();
int k=0;
for(int i=0;i<=charArray.length-charArray1.length+1;i++){
if(charArray[i]==charArray1[k]){
k++;
}else{
k=0;
}
if(k==charArray1.length-1){
k=0;
list.add(i-1);
}
}
return list;
}
/**
* 判断串一中是否包含串二
* @param str1
* @param str2
* @return
*/
public static Boolean indexOf(String str1,String str2){
char [] charArray=str1.toCharArray();
char [] charArray1=str2.toCharArray();
@SuppressWarnings("unused")
List<Integer> list=new ArrayList<Integer>();
int k=0;
for(int i=0;i<=charArray.length-charArray1.length+1;i++){
if(charArray[i]==charArray1[k]){
k++;
}else{
k=0;
}
if(k==charArray1.length-1){
k=0;
return true;
}
}
return false;
}
//测试代码
public static void main(String args[]){
//测试代码
String str1="sfghdfdsssdddsfds";
String str2="fds";
BfMath bfMath = new BfMath();
List<Integer>indexList=BfMath.indexOfStr(str1, str2);
for(Integer index:indexList){
System.out.println(index);
}
Boolean flag=BfMath.indexOf(str1, str2);
System.out.println(flag);
}
}