百度是什么网站,设计logo的手机软件免费,网站界面设计尺寸规范,黄页88☀️ 什么是BF算法
BF算法#xff0c;即暴力算法#xff0c;是普通的模式匹配算法#xff0c;BF算法的思想就是将目标串S的第一个与模式串T的第一个字符串进行匹配#xff0c;若相等#xff0c;则继续比较S的第二个字符和T的第二个字符#xff1b;若不相等#xff0c;则…☀️ 什么是BF算法
BF算法即暴力算法是普通的模式匹配算法BF算法的思想就是将目标串S的第一个与模式串T的第一个字符串进行匹配若相等则继续比较S的第二个字符和T的第二个字符若不相等则比较S的第二个字符和T的第一个字符依次比较下去直到得出最后的匹配结果BF算法是一种蛮力算法。
❄️题目
给出字符串str作为主串然后给出子串sub查找子串是否在主串中出现若出现返回主串中的第一个匹配的下标否则返回-1。
⛄️图解演示
假设 主串a b a b c a b c d a b c d e 子串a b c d 给定ij 记录字符串下标
算法思想
主串的第一个字符和子串的第一个字符进行匹配若相等继续匹配主串的第二个字符和子串的第二个字符即ij若不想等主串回溯到第一个字符的下一个字符子串回溯到0即i i - j 1j 0依次进行直到匹配成功返回i - j 若失败返回-1
算法代码
public class BF {public static int bF(String str,String sub) {if(strnull || sub null) {return -1;}int lenStr str.length();int lenSub sub.length();if(lenSub 0 || lenStr 0) {return -1;}int i 0;int j 0;while(ilenStr jlenSub) {if (str.charAt(i) sub.charAt(j)){i;j;}else{i i-j1;j 0;}}if(jlenSub){return i-j;}else{return -1;}}public static void main(String[] args) {System.out.println(bF(ababcabcdabcde,abcd));System.out.println(bF(ababcabcdabcde,abcdf));System.out.println(bF(ababcabcdabcde,abcde));}
}运行结果 5 -1 9