给定一个字符串,如果字符串“bat”和“ball”出现相同的次数,则返回true

时间:2015-11-25 20:40:00

标签: java string

  

给定一个字符串,如果字符串“bat”和“ball”出现的次数相同,则返回true。

MyApproach

我按照上面的方法。我已经取了字符串“bat”和“ball”。我在字符串中搜索是否存在“bat”模式。我检查了原始字符串的每个字符并与字符进行了比较同样,我搜索了模式球。它将返回true 当球棒和球都出现相同的次数时。

以下是我的输出代码。

public boolean equal(String str)
{
  String str1="bat";
  String str2="ball";
  int l=str.length();
  int l1=str1.length();
  int l2=str2.length();

  if((l<l1) || (l<l2))
  {
      return false;     
  }
  else
  {
      int m=0;
      int n=0;
      int countbat=0;
      int countball=0;
      int p=0;
      int j=0;
      str=str.toLowerCase();
      str1=str1.toLowerCase();
      str2=str2.toLowerCase();

      while(j<l)
      {
          char c=str.charAt(j);
          char c1=str1.charAt(p);

          if(c==c1){
              p++;

              if(p==l1){
                  countbat++;
                  p=0;
              }    
          }
          else{
              p=0;
          }
          j++;

          } 

          while(m<l)
          {
              char c=str.charAt(m);
              char c2=str1.charAt(n);

              if(c==c2){
                  n++;

                  if(n==l2){
                      countball++;
                      n=0;
                  }    
             }
             else
             {
                 n=0;
             }
             m++;

           } 
           if(countbat==countball)
           return true;
           else
           return false;

    }      
 }

     Parameters         Actual Output   Expected Output

    'bat+ball=cricket'  null            true
  

我无法得到正确的输出。任何人都可以告诉我   为什么呢?

3 个答案:

答案 0 :(得分:1)

在您简要解释之前,您的方法并不明确。试试这个。如果你有一个大字符串来搜索球和蝙蝠,你的循环将会非常少。

    String name = "ball bat ball bat bat ball bat bat";

    int batCount = 0;
    int ballCount = 0;
    int index = 0;
    int startIndex = 0;

    while(index != -1){
        index = name.indexOf("bat", startIndex);
        startIndex = index + 1;
        if(index != -1){
            batCount++;
        }
    }

    index = 0;
    startIndex = 0;

    while(index != -1){
        index = name.indexOf("ball", startIndex);
        startIndex = index + 1;
        if(index != -1){
            ballCount++;
        }
    }

    System.out.println(batCount);  //Outputs 5
    System.out.println(ballCount);  //Outputs 3

答案 1 :(得分:1)

更改字符串&#34; c2 = str1.charAt(n);&#34; to&#34; char c2 = str2.charAt(n);&#34; (第二次循环)

答案 2 :(得分:0)

提取一种方法来计算另一个String的出现次数。像,

private static int countWord(String str, String word) {
    int count = 0;
    for (int i = 0; i < str.length() - word.length() + 1; i++) {
        if (str.substring(i, i + word.length()).equals(word)) {
            count++;
        }
    }
    return count;
}

然后您可以实施equal方法,例如

public static boolean equal(String str) {
    return countWord(str, "ball") == countWord(str, "bat");
}