package Algorithm;
public class ViolenceMatchString {
public static void main(String[] args) {
String str1 = "iLoveYou babyDoYouKnow";//[13,17]
String str2 = "DoYou";//[13,17]
//测试
int firstIndex = violenceMatchString(str1,str2);
System.out.println(firstIndex);//13
}
/*
判断字符串 str2 是否是 str1 的子串,如果是,则返回在 str1 中第一次出现的位置,否则返回-1
*/
public static int violenceMatchString(String str1, String str2){
char [] s1 = str1.toCharArray();
char [] s2 = str2.toCharArray();
int len1 = s1.length;
int len2 = s2.length;
int i = 0;//i 索引指向 s1
int j = 0;//j 索引指向 s2
while (i < len1 && j < len2){
if(s1[i] == s2[j]){
//当前字符匹配成功,继续向前匹配
i += 1;
j += 1;
} else {
//匹配不成功, i 回到上一次开始判断的字符的下一位--> i = i - (j - 1)
// j 置 0
i = i - (j - 1);
j = 0;
}
}
//退出循环的时候,j 是递增的
if(j == len2){
return i - j;//说明str2 是 str1 的 子串, 且第一次出现在 i - j 的位置
} else {
return -1;
}
}
}
字符串匹配问题的暴力实现
最新推荐文章于 2024-07-26 12:28:02 发布