2016-09-29 108 views
0

我應該遞歸地計算字符串中有多少「XX」,如果在雙X前面有一個小的X,它不應該被計數。我不確定我做錯了什麼;我似乎被卡住的第一個回報,我不斷收到0遞歸計算字符串中的字符串java

更新:我所擁有的一切工作似乎,但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

同樣的功課? 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)的調用將永遠不會返回雙字符字符串;只有由第一個字符組成的字符串纔會被返回。

要取兩個字符先檢查長度是兩個或更多,然後撥打substring(0, 2)