bughunter:
私は、文字列の最初の文字が文字列全体に表示された回数を返すメソッドを記述しようとしています。これは私がこれまで持っているもので、
public int numberOfFirstChar0(String str) {
char ch = str.charAt(0);
if (str.equals("")) {
return 0;
}
if ((str.substring(0, 1).equals(ch))) {
return 1 + numberOfFirstChar0(str.substring(1));
}
return numberOfFirstChar0(str);
}
しかし、それが動作するようには思えない(文字列内にあるどのように多く発生の正しい結果を返しません)。コードに何か問題はありますか?すべてのヘルプは大歓迎です。
ジェイソン:
これは2つの機能、再帰的であるものを使用しています。私たちは、代わりにそれを上にやって超えると文字列を連結した後に文字列から最初のインデックスと文字配列で文字を得ます。私たちは、その後、文字配列のインデックスを経由続けるために再帰を使用しています。
あなたがこれを行うだろうなぜ私は見当がつかない。forループの簡単なは、はるかに簡単な方法でこれを達成するであろう。
private static int numberOfFirstChar0(String str) {
if (str.isEmpty()) {
return 0;
}
char[] characters = str.toCharArray();
char character = characters[0];
return occurrences(characters, character, 0, 0);
}
private static int occurrences(char[] characters, char character, int index, int occurrences) {
if (index >= characters.length - 1) {
return occurrences;
}
if (characters[index] == character) {
occurrences++;
}
return occurrences(characters, character, ++index, occurrences);
}
Javaの8ソリューション
private static long occurrencesOfFirst(String input) {
if (input.isEmpty()) {
return 0;
}
char characterAtIndexZero = input.charAt(0);
return input.chars()
.filter(character -> character == characterAtIndexZero)
.count();
}