在已有字符串中查找指定字符串是否存在,主要有以下方法:
方法一:
/**
* 在原始串中寻找字串t,如果找到,返回t在s中的首字母的下标值
* 字串没找到,返回-1
* @param s
* @param t
* @return
*/
private static int finding(String s,String t){
int i=0;
int j=0;
while(i<s.length() && j<t.length()){//O(n^2)
if(s.charAt(i)==t.charAt(j)){
i++;
j++;
}else{
i=i-j+1;
j=0;
}
}
if(j==t.length()){
return i-j;
}
return -1;
}
方法二:
private static int find(String s,String t){
int i=0;
int j=0;
int k=0;
for(;i<s.length();++i){
k=i;
for(;j<t.length();++j){
if(s.charAt(k)==t.charAt(j)){//charAt()检索制定位置的字符;例:插入charAt(0)检索第一个字符
k++;
}else{
break;
}
}
if(j==t.length()){
return i;
}
}
return -1;
}
方法三:
kmp算法
见博客:https://blog.csdn.net/qq_44822686/article/details/96883319
方法四:
此方法是最简单的String中的方法indexOf(),主串称为s,要查找的串称为t。
打入System.out.print(s.indexOf(t));即可输出t在s中的首字母的下标值。
public static void main(String[] args){
String s="abcdabcabefg";
String t="abcabe";
System.out.print(s.indexOf(t));
}