2016-11-03 3 views
1

정수 n을 매개 변수로 사용하고 행의 기본 10 표현 n에 나타나는 최대 자리수를 반환하는 digitsInARow라는 정적 메서드를 작성합니다. 많은 숫자의 경우 인접한 숫자가 일치하지 않기 때문에 답이 1이됩니다. 그러나 3555585와 같은 숫자의 경우 행에 숫자 5가 네 번 나타나므로 대답은 4입니다. 이 문제를 해결하기 위해 문자열을 사용할 수 없습니다. 메서드에 전달 된 값이 0보다 크거나 같다고 가정 할 수 있습니다.Java에서 정수를 사용하는 경우

public static int digitsInARow(int n) { 
    if (n/10 == 0) { 
     return 1; 
    } 
    int count = 0; 
    int count1 = 0; 

    while (n > 0) { 
     int digit = n % 10; 
     int a = n/10; 
     if (digit == a % 10) { 
      count++; 
     } else { 
      count1 = Math.max(count1, count); 
      count = 0; 
     }   
     n = n/10; 
    } 
    return Math.max(count, count1); 
} 

if 문이 엉망입니다. Integer 클래스 또는 String 클래스를 사용하지 않고 연속 숫자를 비교하는 방법을 알아 내려고 노력 중입니다. 어떤 제안?

+0

현재 코드의 문제점은 무엇입니까? – Tunaki

+1

최대 개수를 추적해야합니다. 지금 카운트가 0으로 리셋 될 때마다 코드가이를 잊어 버립니다. – TheGreatContini

+0

@Tunaki 출력이 잘못되었습니다. 그것은 별도의 if 문이있는 한 자리 숫자가 아니면 0을 반환합니다. –

답변

3

코드의 문제점은 count이 현재 카운트가 아니라 최대 카운트가 아닌 것입니다. 가장 높은 수를 추적하는 변수를 추가하고 숫자를 처리 할 때마다 을 업데이트하여count으로 다시 설정하기 전에 업데이트해야합니다.

루프를 종료 할 때 최대 카운트를 업데이트하는 것을 잊지 마시기 바랍니다. 그때는 현재 count이 이전에 발견 된 max보다 큽니다.

+0

감사합니다. 내 코드를 약간 편집했지만 여전히 출력이 잘못되었습니다. –

+0

@TheBolt 그것은'count1 + = count;'부분 때문입니다. 구형'count1'의 최대 값과 새로운'count'를'count1'에 할당해야합니다. – dasblinkenlight

+0

고마워요! 나는 다른 것을 시도했지만 여전히 잘못되었습니다. / –

관련 문제