AB
Size: a a a
AB
AB
AB
AB
MK
AB
AB
MK
AB
GV
String test = "This, is aaa Tessst";Держи самый грубый вариант. Граничные кейсы не рассматривал
String[] data = test.split("[\\W]+");
String maxWord = Arrays.stream(data).max(Comparator.comparingInt(String::length)).orElseThrow();
String minWord = Arrays.stream(data).min(Comparator.comparingInt(String::length)).orElseThrow();
Matcher minMatcher = Pattern.compile("\\b" + minWord).matcher(test);
minMatcher.find();
int indexOfMin = minMatcher.start();
Matcher maxMatcher = Pattern.compile("\\b" + maxWord).matcher(test);
maxMatcher.find();
int indexOfMax = maxMatcher.start();
String stringBuilder = test.substring(0, indexOfMin) +
maxWord +
test.substring(indexOfMin + minWord.length(), indexOfMax) +
minWord + test.substring(indexOfMax + maxWord.length());
System.out.println(stringBuilder);
AB
MK
MK
AB
MK
String test = "This, is aaa Tessst";Держи самый грубый вариант. Граничные кейсы не рассматривал
String[] data = test.split("[\\W]+");
String maxWord = Arrays.stream(data).max(Comparator.comparingInt(String::length)).orElseThrow();
String minWord = Arrays.stream(data).min(Comparator.comparingInt(String::length)).orElseThrow();
Matcher minMatcher = Pattern.compile("\\b" + minWord).matcher(test);
minMatcher.find();
int indexOfMin = minMatcher.start();
Matcher maxMatcher = Pattern.compile("\\b" + maxWord).matcher(test);
maxMatcher.find();
int indexOfMax = maxMatcher.start();
String stringBuilder = test.substring(0, indexOfMin) +
maxWord +
test.substring(indexOfMin + minWord.length(), indexOfMax) +
minWord + test.substring(indexOfMax + maxWord.length());
System.out.println(stringBuilder);
MK
MK
AB
MK
MK