给定一个主字符串,请返回指定字符串在主字符串中的出现次数
考点:String方法的使用
import org.junit.Test;
public class MyTest {
public int test(String mainStr, String subStr) {
int mainLength = mainStr.length();
int subLength = subStr.length();
int index = 0;
int count = 0;//相同字符出现个数计数
if (mainLength >= subLength) {
while ((index = mainStr.indexOf(subStr, index)) != -1) {//indexOf返回subStr所在索引,index为从哪里开始查找
count++;
index += subLength;
}
return count;
} else {
return 0;
}
}
@Test
public void testGetCount(){
String mainStr = "abdufbfabdyuabfuyirf578fab";
String subStr = "ab";
int cou = test(mainStr,subStr);
System.out.println(cou);
}
}
>>> 4
给定两个字符串,返回两个字符串中最长的相同子串,只找一次
考点:双指针与String方法的使用
import org.junit.Test;
public class MyTest {
public String getMaxSameString(String str1, String str2){
String maxStr = (str1.length() >= str2.length()) ? str1 : str2;
String minStr = (str1.length() < str2.length()) ? str1 : str2;
int length = minStr.length();//遍历多少轮
for (int i = 0; i < length; i++) {
for (int x = 0, y = length - i; y <= length; x++, y++) {
String subStr = minStr.substring(x,y);
if (maxStr.contains(subStr)){
return subStr;
}
}
}
return null;
}
@Test
public void test(){
String str1 = "abcdeffyubfdhello";
String str2 = "hello";
String str = getMaxSameString(str1,str2);
System.out.println(str);
}
}
>>> hello