您好,我是学生,我的问题更详细。
给定一个字符串和两个字母(c1和c2),返回字符串中出现“axb”次数的计数,其中x是任何字符。例如,给定字符串“antiaircraft”和字母“a”和“t”,您的方法应返回2.三个字母的图案可能重叠。例如,“aaaa”有两次出现“axa”。
到目前为止我写的是
public int countAxA(String str, char c1, char c2) {
int count = 0;
for (int i=0; i < str.length(); i++)
{
if (str.charAt(i) == c2)
{
count++;
}
}
return count;
}
所以根据我的作业,一些输入有效,但有些则不然。有什么我想念的吗?
答案 0 :(得分:1)
只需迭代一次并跟踪,如果你碰巧找到了第一个字符,那么就做一个前瞻:
public int countAxA(String s, char one, char two) {
char[] cs = s.toCharArray();
int count = 0;
for (int i = 0; i < cs.length - 2; i++) { //don't need to go beyond 3rd last char
if (cs[i] == one && cs[i + 2] == two) {
count++;
}
}
return count;
}
答案 1 :(得分:0)
public int countAxA(String str, char c1, char c2) {
int count = 0;
for (int i=0; i < str.length(); i++)
{
if (str.charAt(i) == c1)
{
if(i+2 < str.length() && str.charAt(i+2) == c2)
count++;
}
}
return count;
}
试试这个!!!
答案 2 :(得分:0)
public int countAxA(String str, char c1, char c2) {
int count = 0;
for (int i=0; i < str.length()-2; i++)
{
if (str.charAt(i) == c1 && str.charAt(i+2) == c2)
{
count++;
}
}
return count;
}
试试这个.. 你正在检查c2, 所以, tanticarft作为输入将导致输出:-3
但你必须检查c1和c2
答案 3 :(得分:0)
考虑到您的作业说明,您的计划应该更长。你在这做什么
if (str.charAt(i) == c2)
{
count++;
}
只计算角色c2出现的次数。
尝试使用类似的东西,
if(str.charAt(x)==c1 && str.charAt(x+2) ==c2)
count ++
使用此语句,您现在正在检查axb是否存在,并在每次遇到axb时添加1来计数。
答案 4 :(得分:0)
你走在正确的轨道上。
public int countAxA(String str, char c1, char c2)
{
int count = 0;
for (int i=0; i < str.length(); i++)
{
if (str.charAt(i) == c1 && i +2 < str.length && str.charAt(i+2) == c2)
{
count++;
}
}
return count;
}
答案 5 :(得分:0)
试试这个..
int count=0, incrementCounter=2;
for(int i=0;i<str.length();i++){
if(str.charAt(i)==c1){
if(str.charAt(i+incrementCounter)==c2 && incrementCounter<=str.length()){
i = i+incrementCounter;
count++;
}
}
}
System.out.println(count);