Метод Хольгера побеждает, но разница между другими решениями мала, когда код достаточно горячий.
принимает слова, разделенные запятыми, какString
и возвращаетString
слов, разделенных запятыми, со словами в естественном порядке сортировки, не содержащих 4-х буквенных слов, содержат все слова в верхнем регистре и не содержат дубликатов. Первый подход довольно медленный по сравнению со вторым подходом. Можете ли вы помочь мне понять, почему и как я могу улучшить свой подход?
Подход 1:
public String stringProcessing(String s){
Stream<String> tokens = Arrays.stream(s.split(","));
return tokens.filter(t -> t.length() != 4) .distinct()
.sorted()
.collect(Collectors.joining(",")).toUpperCase();
}
Подход 2:
public String processing(String s) {
String[] tokens = s.split(",");
Set<String> resultSet = new TreeSet<>();
for(String t:tokens){
if(t.length() != 4)
resultSet.add(t.toUpperCase());
}
StringBuilder result = new StringBuilder();
resultSet.forEach(key -> {
result.append(key).append(",");
});
result.deleteCharAt(result.length()-1);
return result.toString();
}