2017-08-13 86 views
-3

我試圖找到一個二進制字符串中連續的最大數目。如何在二進制數中找到最大連續數?

輸入:67

預期輸出:2

我的輸出:7

說明:67二進制是1000011,所以輸出應該是2,但我發現了7爲輸出。有人可以指出這個錯誤嗎?

下面的代碼:

public class Test{ 
    static int getMax(int n) 
    { 
     String bin = Integer.toBinaryString(n); 
     char[] arr = bin.toCharArray(); 
     int count = 0; 
     int result = 0; 
     for(int i=0; i < arr.length; i++) 
     { 
      if(arr[i]==0) 
      { 
       count = 0; 
      } 
      else 
      { 
       count++; 
       result=Math.max(result,count); 
      } 
     } 
     return result; 
    } 
    public static void main(String args[]) 
    { 
     System.out.println(getMax(67)); 
    } 
} 
+2

你應該做一些調試。 –

+1

歡迎來到堆棧溢出!它看起來像你需要學習使用調試器。請幫助一些[互補調試技術](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。如果您之後仍然遇到問題,請隨時回答一個更具體的問題。 –

+3

我會在這裏留下:'0'和''0''有什麼區別? –

回答

-1

更改,如果條件.. 如果(arr.charAt(I)== '0')

+0

charAt(i)對於char []類型來說確實不正確。 bin.charAt(i)會工作,雖然 –

+0

是的,我認爲這就是他的意思。當他說出答案時,我將它改爲'bin.charAt(i)'。 – coder7777

-2

除了錯誤的條件(if (arr[i] == 0)if (arr[i] == '0')),則不需要每次計算循環中的最大值。

祝你好運!

相關問題