颠倒语序如何实现?

667 阅读1分钟

有一道这样的笔试题: 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) : "";
    }