Скажем, у меня есть следующая строка: «loveyou», мне нужно написать алгоритм, чтобы разбить его на: [«love», «you»].
У меня есть словарь со всеми возможными словами .. Я думал о том, чтобы пройти все возможные варианты и проверить, являются ли они словами:
«l oveyou», «lo veyou», «lov eyou», «люблю тебя».
Это приведет к выполнению O (n^2) времени. Существует ли более оптимизированный алгоритм?Разделение связанного предложения на отдельные слова
public int splitSentence(String s) {
for (int i=1; i<s.length(); i++) {
if (isAWord(s.split(0, i) && isAWord(i, s.length()) {
return i;
}
}
return -1;
}
разделил его на «точно» два слова? И вы уверены, что вы дали алгоритм 'O (n^2)'? – arunmoezhi
Что если одно слово содержит другое? –
Я считаю, что алгоритм O (n^2), потому что первая итерация цикла равна (1 + (n-1)) .. вторая (2 + (n-2)) .... ((n- 1) + 1) ... Что означает n + n + n ... + n = n^2 – Qkwe