判断一个字符串是否存在另一个字符串,如果存在,就返回第一次出现的位置,如果不存在,则返回-1.
//判断str2中是否含有str1,如果存在,就返回第一次出现的位置,如果没有,则返回-1
public static int violenceMatch(String str1,String str2) {
//把字符串转成字符数组
char s1[] = str1.toCharArray();
char s2[] = str2.toCharArray();
int flag = -1;//记录第一次出现的位置,如没有返回-1
//循环遍历
for(int i = 0;i < s1.length;) {
for(int j = 0;j < s2.length;) {
//如果移动到s2的j索引上后小于s1的长度,那么不用比较,肯定不存在
if(s2.length - j < s1.length) {
return -1;
}
//如果第一个字符相等
if(s2[j] == s1[i]) {
//记录位置
flag = j;
//继续往后匹配
while(i < s1.length) {
if(s2[j] == s1[i]) {
i++;
j++;
}else{
break;
}
}
//如果匹配完成,返回flag
if(i == s1.length) {
return flag;
}
//如果匹配不成功,回溯
j = j - i + 1;
i = 0;
//重置flag
flag = -1;
continue;
}else {
j++;
}
}
}
return -1;
}