2015-11-25 94 views
-2

給定一個字符串,如果字符串「bat」和「ball」出現相同次數,則返回true。給定一個字符串,如果字符串「bat」和「ball」出現相同次數,則返回true

MyApproach

我遵循上述approach.I已經採取了字符串「球棒」和「球」 .I搜索的字符串中是否模式「球棒」存在或not.I檢查的每個原始字符串的字符並與蝙蝠的字符進行比較。類似地,我搜索了模式球。它將返回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 

我不能得到正確的output.Can誰能告訴我 爲什麼?

+4

究竟是什麼問題? – Atri

+0

@ashutosh編輯代碼。 –

+0

@ashutosh謝謝你的亮點。 –

回答

1

更改字符「c2 = str1.charAt(n);」到「char c2 = str2.charAt(n);」 (第二次循環)

+0

Thanku Ned Rise這是我愚蠢的錯誤。 –

+0

沒問題,不客氣:) – NedRise

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"); 
} 
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 
+0

你試過這個嗎?此解決方案將需要最少數量的循環.. – hagrawal

+0

我將保留它作爲參考。 –

相關問題