Вам даны строка s с нулевым индексом и словарь слов. Вам необходимо разбить s на одну или несколько непересекающихся подстрок так, чтобы каждая подстрока присутствовала в словаре. В s могут быть дополнительные символы, которых нет ни в одной из подстрок.
Верните минимальное количество оставшихся дополнительных символов, если вы оптимально разбили s.
Вот вводимые данные:
s =
"rkmsilizktprllwoimafyuqmeqrujxdzgp"
dictionary =
["afy","lyso","ymdt","uqm","cfybt","lwoim", "hdzeg","th","rkmsi","d","e","tp","r","jx","tofxe","etjx","llqs","cpir","p ","ncz","ofeyx","eqru","l","demij","tjky","jgodm","y","ernt","jfns","akjtl","wt", "tk","zg","lxoi","kt"]
Я нахожусь на этапе, когда я сдал тесты 2020/2028 года, но Я просто не понимаю, где в моем коде ошибка:
Код: Выделить всё
class Solution {
public int minExtraChar(String s, String[] dictionary) {
List dictionary2 = new ArrayList();
for (String str: dictionary){
if (s.contains(str)){
dictionary2.add(str);
}
}
List sorted = dictionary2.stream()
.sorted(Comparator.comparingInt(String::length).reversed())
.collect(Collectors.toList());
for (String a: sorted){
System.out.println(a);
}
for (String str: sorted){
if (s.contains(str)){
System.out.println("----------------------------");
System.out.println(s);
System.out.println(str);
String ak = " ";
ak = ak.repeat(str.length());
s = s.replace(str,ak);
}
}
s = s.replace(" ","");
System.out.println(s);
return s.length();
}
}
Я знаю, что это не самый традиционный способ решения этой проблемы, но есть ли способ изменить этот код, чтобы он работал, или мне следует начать с самого начала?
Спасибо за любую помощь
Подробнее здесь: https://stackoverflow.com/questions/790 ... tcode-2707
Мобильная версия