字符串和2个字母

时间:2016-10-18 04:30:42

标签: java regex string

您好,我是学生,我的问题更详细。

  

给定一个字符串和两个字母(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;
}

所以根据我的作业,一些输入有效,但有些则不然。有什么我想念的吗?

6 个答案:

答案 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; 
}
  1. 遍历str中的每个字符。
  2. 检查当前char是否等于c1
  3. 如果是,则检查当前索引+ 2是否不在界限
  4. 然后检查当前指数+ 2
  5. 的c2
  6. 最后,如果满足所有条件,则增加计数;

答案 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);