
代码如下:
public class Exercise1 {
public static void main(String[] args) {
String s = "ababababababababa";
String target = "aba";//子字符串
int times = 0;//记录出现次数
int length = s.length();//字符串的长度
int targetLength = target.length();//子字符串长度
int maxIndex = length-targetLength;//遍历字符串时最大下标
for(int i= 0;i<=maxIndex;i++)
{
String s1 = s.substring(i,i+targetLength);//截取字符串
if(s1.equals(target))
times++;
}
System.out.println(times);
}
}
首先题目要求,求以上字符串中的子字符串aba出现的次数,要求使用String类完成,
咱们先用String s 创建一个字符串ababababababababa,再创建一个子字符串,再创建一个times记录出现次数,length求出字符串长度和子字符串长度,int maxInde最大下标用字符串长度减去子字符串长度,字符串长度是17,子字符串长度是3,17-3=14,而最后一次出现aba的下标正好是14,利用for循环小于等于14,i依次++循环,s1=等于s.subString截取字符串,里面有两个参数,说明是指定开始位置到指定结束位置,截取是使用的是左闭右开区间,说明第一次截取的是[0,3),这样第一次截取的是下标0,1,2的字符串,正好是第一次aba,截取赋值s1,这,时if判断是否和子字符串相等,相等则times++,第二次循环,i=1,i+字符串3变成4,subString里面参数是[1,4),这时截取的是下标1,2,3,的字符串bab,赋值s1,if判断不满足条件,进入下次循环,i=2,字符串变成5,subString里面参数变成[2,5),这时截取的是下标2,3,4的字符串aba,赋值s1,if判断满足条件times++,再依次循环times变成了8,说明上述字符串中的子字符串aba一共出现了8次。
以上我说的不好各位大佬多多见谅,可以复制代码直接调试。

被折叠的 条评论
为什么被折叠?



