Функция аля Split

Напишите функцию, которая принимает строку и возвращает массив слов.

Под словом подразумеваются множество символов отличных от пробела. Между словами может стоять больше одного пробела.

Максимальная длина строки 10^6 символов. Сигнатура функции

Название функции: split.

Параметры: String s.

Возвращаемый тип: String[].

Пример:

Входные данные:

s = "Any TexSt";

Выходные данные:

result = [ "Any", "TexSt" ];

public static String[] split(String s) {
    int count = 0;
    char[] c = s.toCharArray();
    for (int i = 0; i < c.length - 1; i++) {
        if (i == 0 && (int) c[i] <= 127 && (int) c[i] != 32 || (int) c[i] == 32 && (int) c[i + 1] <= 127 && (int) c[i + 1] != 32) {
            count++;
        }
    }
    String temp = "";
    int k = 0;
    String[] result = new String[count];
    for (int i = 0; i < c.length; i++) {
        if ((int) c[i] != 32) {
            result[k] = temp;
            temp = temp + c[i];
            result[k] = temp;
        }
    }
    return result;
}

Здравствуйте.Выше описаны условия задачи.Создать некое подобие функции сплит.Застрял на том моменте,что не могу получить результат в n-количестве слов.Экспериментировал очень много,дебажил. На платформе очень много тестов. например входные данные могут быть и такими :

" t        test           tes   t"

Вот ,тот код ,каким я решил на платформе.Его я нашел (естественно).

public static String[] split(String s) {
    ArrayList<String> words = new ArrayList<>();
    StringBuilder currentWord = new StringBuilder();
    for (Character letter : s.toCharArray()) {
        if (letter.equals(' ')) {
            if (currentWord.length() > 0) {
                words.add(currentWord.toString());
                currentWord = new StringBuilder();
            }
        } else {
            currentWord.append(letter);
        }
    }
    if (currentWord.length() > 0) {
        words.add(currentWord.toString());
    }
    String[] wordsArr = words.toArray(String[]::new);
    return  wordsArr;
}

Ответы (1 шт):

Автор решения: tym32167

Вот как альтернативный пример. Проматываем все пробелы, потом забираем слово и так по кругу.

public static String[] split(String s) {
    ArrayList<String> result = new ArrayList<>();
    int ind = 0;

    while (ind < s.length())
    {
        while (ind < s.length() && s.charAt(ind) == ' ') ind++;
        int start = ind;
        while (ind < s.length() && s.charAt(ind) != ' ') ind++;
        if (start != ind)
            result.add(s.substring(start, ind));
    }

    return result.toArray(new String[result.size()]);
}
→ Ссылка