gpt4 book ai didi

java - 计算 a 在字符串中出现且重叠的次数

转载 作者:行者123 更新时间:2023-12-01 21:09:59 28 4
gpt4 key购买 nike

计算 aaa 在字符串中出现的次数,1. 不重复,2. 允许重复。我尝试了以下代码,它适用于第一种情况,但不适用于第二种情况。

public static void main(String[] args) {
String str="cbaadaaabefaaaag";
int count=0,count1=0;
for(int i=0;i<str.length();i++)
{
if(str.charAt(i)=='a' && str.charAt(i+1)=='a' && str.charAt(i+2)=='a')
{
count++;
}
}
System.out.println(count);
for(int i=0;i<str.length();i++)
{
if(i==0)
{
if(str.charAt(i)=='a' && str.charAt(i+1)=='a' && str.charAt(i+2)=='a')
{
count1++;
}
}
else
{
if(str.charAt(i-1)=='a' && str.charAt(i)=='a' && str.charAt(i+1)=='a')
{
count1++;
}
}
}
System.out.println(count1);

}

我尝试的输入是cbaadaaabefaaaag,对于第一种情况应该给出3,对于第二种情况应该给出2,而且当输入是aaaa时,对于第一种情况应该是1,并且2 表示重叠情况。

最佳答案

这段代码应该可以帮助你:

public static void main(String args[]) throws Exception {

String str = "cbaadaaabefaaaaaaag";
System.out.println(count(str, true));
System.out.println(count(str, false));

}

public static int count(String str, boolean overlap) {

int count = 0;

for (int i = 0; i < str.length() - 2; i++) {
if (str.charAt(i) == 'a' && str.charAt(i + 1) == 'a'
&& str.charAt(i + 2) == 'a') {
if (!overlap) {
i += 2;
}
count++;
}
}

return count;

}

条件i < str.length() - 2确保您不会得到 StringIndexOutOfBoundsException ,因为如果字符串中只剩下两个字符,则不能有另一个子字符串 aaa .

重叠条件将两个添加到当前索引,其中子字符串 aaa找到了,因此您的索引指向最后找到的序列 aaa 之后的下一个字符,这可以防止重叠。

关于java - 计算 a 在字符串中出现且重叠的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41351271/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com