public class Test
{
//一个子串在整串中出现的次数。
public static void main(String[[] args){
String str="nbaernbatnbaynbauinbaopnba";
String key= "nba";
int count=getKeyStringCount_1(str,key);
System.out.println(count);
}
public static int getKeyStringCount_1(String str,String key){
//定义计数器
int count=0;
//定义变量记录key出现的位置
int index=0;
while ((index=str.indexOf(key))!=-1){
/*indexOf(String str);返回指定子字符串在此字符串中第一次出现处的索引。
当为-1时,如果它不作为一个子字符串出现,则返回 -1。*/
str=str.substring(index+key.length());
/*substring(int beginIndex);返回一个新的字符串,它是此字符串的一个子字符串。
循环执行的是index+key.length();每一次循环从key出现位置的下一次开始.*/
count++;
}
return count;
}
}
public class Test2
{
//两个字符串中最大相同的子串
public static void main(String[] args){
String s1="qwerabcdtyuiop";;
String s2="xcabcdvbn";
String s=getMaxSubString(s1,s2);
System.out.println(s);
}
public static String getMaxSubString(String s1,String s2){
String man=null.min=null;
//定义两个变量获取两个字符串的长度
max=(s1.length()>s2.length())?s1:s2;
min=max.equals(s1)?s2:s1;
System.out.println(max,min);
for (int x=0;x<min.length() ;x++ ){
//为什么x<min.length(),从较小字串开始循环,直到这个字符循环结束来判断是否有相同的子串
for (int a=0,b=min.length()-x;b!=min.length()+1 ; a++,b++){
/*b的初始化变量为min.length()-x(从a++,b--获取一段子串),
substring(int beginIndex,int endIndex)返回一个新字符串,它是此字符串的一个子字符串。
该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。
因此,该子字符串的长度为 endIndex-beginIndex。*/
String sub=min.substring(a,b);
if (max.contains(sub){
return sub;
}
}
return null;
}
}
}