Следующие символы: «R», «G», «B» и «X». Они должны быть добавлены каждый раз к существующему String
, длина которого варьируется от 0 до 5. Эта длина включает специальный символ /
. Т.е., существующая строка может выглядеть следующим образом:Как добавить новый символ в существующую строку в отсортированном порядке?
null
- "" (пустая строка)
- "Г"
- "B/X"
- "G/B"
- "R/G/B"
- и т.д. (другие варианты выше)
В последней строке всегда должна иметь порядок "G/R/B/X":
G
должен быть первым товар.X
должен быть последним товаром.R
должно прибыть послеG
и доB
.B
должен прибыть послеR
.
Любой из этих символов может существовать или не существовать.
Это выглядит довольно просто, если существующая строка только один символ:
private String sortThemAll(String existingString, String newString) {
if (TextUtils.isEmpty(existingString)) {
return newString;
}
if (existingString.length() == 1) {
List<String> list = Arrays.asList(existingString, newString);
if (list.contains("G") && list.contains("R")) {
Collections.sort(list);
} else {
Collections.sort(list, Collections.reverseOrder());
}
return list.get(0).concat("/").concat(list.get(1));
}
if (existingString.length() == 3) { // e.g., "B/X"
// Assuming that existingString is already sorted
if ("G".equals(newString)) {
// G should always be the first item on the list
return newString.concat("/").concat(existingString);
}
if ("X".equals(newString)) {
// X should always be the last item on the list
return existingString.concat("/").concat(newString);
}
/*** I don't know how I should proceed from this point ***/
}
return existingString.concat("/").concat(newString);
}
Я не могу видеть картину в этой проблеме, все, что я могу думать несколько вложенных if/else
блоков. Как я могу это достичь? Благодарю.
попробовать использовать Список listString = новый ArrayList (); –
andreich
@andreich, как я буду сортировать этот 'listString'? :) – ozbek
Collections.sort (listString); – andreich