给定以下字符:“R”、“G”、“B”和“X”。必须一次将它们添加到长度从 0 到 5 不等的现有String
中。此长度包括特殊字符/
。即,现有字符串可能如下所示:
null
- “”(空字符串)
- “G”
- “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
块。我怎样才能做到这一点?谢谢。