2016-09-29 2 views
0

이중 X 앞에 작은 x가있는 경우 반복적으로 "XX"가 문자열에 몇 개 있는지 계산해야합니다. 내가 뭘 잘못하고 있는지 잘 모르겠다. 내가 보인다 작업 모두를 가지고 있지만, XXXXXX는 1 대신 2재귀 적으로 문자열 내부에서 문자열을 계산합니다.

public static int count(String s) { 

     if ((s.length() < 2)) 
      return 0; 
     int counter = 0; 
     if (s.charAt(0)== 'x') 
     { 
     if (s.substring(0, 2).equals("xX")) 
      return count(s.substring(3)); 

     } 
     if (s.substring(0, 2).equals("XX")) { 
      return 1 + count(s.substring(3)); 
     } 
     else 
      return counter + count(s.substring(1)); 
     } 



public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Scanner kb = new Scanner(System.in); 
    System.out.println("Enter a String: "); 
    String s = kb.nextLine(); 
    System.out.println(count(s)); 
} 

}

의 계산 점점 계속 : 나는 0

UPDATE가 계속, 가장 먼저 반환에 갇히지 것 같다

+0

동일한 숙제? http://stackoverflow.com/q/39758831/2710704 – Tokazio

+0

문자열이 "XXX"(1 또는 2) 인 경우 반환 값은 무엇입니까? 다른 말로하면, 당신은 겹치는 "XX"를 세어야합니까? 그렇다면'count'를 재귀 적으로 호출 할 때 위치 인덱스 ('substring'의 인수)를 줄이십시오. –

+0

'XX'가 보이지 않는 한 두 명씩하지 마십시오. 문자가'x'인지 확인하십시오. 그럴 경우 다음 호출을 위해 문자를 잘라냅니다. 그것이'X' 인 경우,'XX'인지보기 위해 다음 것을 확인하십시오. 그럴 경우 '1'을 추가하십시오. 그렇지 않으면 다음 호출에서 값을 리턴하십시오. – dasblinkenlight

답변

1

substring 호출의 끝 인덱스는 전용이므로 substring(0, 1)을 호출하면 절대로 2 문자 문자열을 반환하지 않습니다. 첫 번째 문자로 구성된 문자열 만 반환됩니다.

두자를 먼저 가져 가면 길이가 두 개 이상인지 확인한 다음 substring(0, 2)으로 전화하십시오.

관련 문제