BF算法
2015-08-20 11:12
387 查看
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);
}
}
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);
}
}
相关文章推荐
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- 数据结构之Treap详解
- JavaScript数据结构和算法之图和图算法
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- Java数据结构及算法实例:插入排序 Insertion Sort
- Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例
- Java数据结构及算法实例:选择排序 Selection Sort
- Java数据结构及算法实例:朴素字符匹配 Brute Force
- Java数据结构及算法实例:汉诺塔问题 Hanoi
- Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)
- java数据结构和算法学习之汉诺塔示例
- Java数据结构及算法实例:三角数字
- Java数据结构之简单链表的定义与实现方法示例
- 数据结构之AVL树详解
- qqwry.dat的数据结构图文解释第1/2页
- 字符串的模式匹配详解--BF算法与KMP算法