-2

編集:本当に申し訳ありませんが、私は Java を意味します! 私が思うに、最初の contains if ステートメントは s == null または長さ 0 用であると思いますが、何を入れるかについて混乱しています

return spaceCount(s.substring(1, ......)) + ......;

部。

いくつかの if ステートメントを使用して、文字列をパラメーターとして取り、それが持つ空白スペースの数を再帰的にカウントする関数を記述しようとしています。これまでのところ、

public static int spaceCount (string s) {
    if ( ...... ) {
        return 0;
    }
    char c = s.charAt(0);
    if (....... ) {
        return spaceCount (.....);
    } else {
        return spaceCount(s.substring(1, ......)) + ......;
    }
}

では、最初の if 文では、文字列の長さが 0 の場合を書くべきでしょうか? スペースがまったくない場合はカバーできないと確信しているので、どうすればよいかわかりません。

2 番目と 3 番目については、文字列をスキャンしてスペースを探す必要があることはわかっていますが、その方法もよくわかりません。ヒントや方向性をいただければ幸いです。

4

4 に答える 4

3
public static int spaceCount(final String s) {

    if(s == null || s.length() == 0) {
        return 0;
    }

    char c = s.charAt(0);
    if(' ' != c) {
        return spaceCount(s.substring(1));
    } else {
        return spaceCount(s.substring(1)) + 1;
    }

}

「文字列をスキャンしてスペースを探す」必要はありません。これは、文字列の残りを渡す再帰が行うことです。

于 2013-05-07T01:44:01.363 に答える
0
public class CountSpaces {

    public static void main(String[] args) {
        String str = "     A   ";
        System.out.println(spaceCount(str, 0));
        System.out.println(spaceCount(str));
    }

    public static int spaceCount(String str, int count) {
        if (str == null) {
            return 0;
        } else if (str.length() > 0) {
            char c = str.charAt(0);
            if (Character.isWhitespace(c)) {
                count++;
            }
            return spaceCount(str.substring(1), count);
        } else {
            return count;
        }
    }

    public static int spaceCount(String s) {
        if (s.length() == 0 || s == null) {
            return 0;
        }
        char c = s.charAt(0);
        if (!Character.isWhitespace(c)) {
            return spaceCount(s.substring(1));
        } else {
            return spaceCount(s.substring(1, s.length())) + 1;
        }
    }
}
于 2013-05-07T02:14:45.143 に答える