有一道这样的笔试题: Long long ago , there lived a king”。 (提示:即把上述句子变成“king a lived there , ago long Long”)。
实现方式一:思路简单,就是循环和利用内存空间来实现;
public static String reverseSentence(String str){
List<String> list = new ArrayList<String>();
StringBuffer buffer = new StringBuffer(str);
String[] strings = buffer.toString().split(" ");
for (String string : strings) {
StringBuilder builder = new StringBuilder(string);
list.add(builder.toString());
}
String result = "";
for (int i = 0; i < list.size(); i++) {
// 此处会多次调用new,思考下可以怎么改更优雅?
result = result + " " + list.get(i);
}
return result;
}
实现方式二:比较简洁,利用集合反转进行倒序;
public static String reverseSentence(String str){
String[] strings = str.split(" ");
List<String> list = Arrays.asList(strings);
Collections.reverse(list);
return list.size() > 0 ? String.join(" ", list) : "";
}