翻转单词的顺序(思路与实现)

题目描述

牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?

思路:

首先我想到的就是使用一个split方法,将这个字符串转化为一个数组,然后对这个数组两头交换顺序,然后遍历这个数组,将这个数组中的每一个值都放入到这个stringbuffer中,但是我刚刚开始感觉自己很傻,明明可以不用交换顺序,我可以直接反向遍历这个数组,然后每次遍历一个值加入到这个stringbuffer中并且加上空格,最后一个不用。

但是需要注意的是这里面有一个坑,当我的这个数组是一个空格字符创,那么输出的也应该是一个空格字符创,然后如果是一个空字符串,那么这个时候和空格字符创的处理方式是一样的。

实现(我蹩脚的代码给大家看看):

public class Solution {
    public String ReverseSentence(String str) {
        if(str.trim().length() == 0){
            return str;
        }
        String[] strs = str.split(" ");
        int start = 0;
        int end = strs.length - 1;
        /*我就是一个傻子,刚刚开始我就使用这种方法,我可以直接遍历和这个数组,然后从后面拿到这个值*/
        /*
        while(start < end){
            String temp = strs[start];
            strs[start] = strs[end];
            strs[end] = temp;
            start ++;
            end --;
        }
        StringBuffer buffer = new StringBuffer();
        for(int i = 0; i < strs.length; i ++){
            if( i != strs.length - 1){
                buffer.append(strs[i] + " ");
            }else{
                buffer.append(strs[i]);
            }
        }
        return buffer.toString();
        */
        StringBuffer buffer = new StringBuffer();
        for(int i = strs.length - 1; i >= 0; i --){
            buffer.append(strs[i]);
            if(i > 0){
                buffer.append(" ");
            }
        }
        return buffer.toString();
       
        
    }
}

猜你喜欢

转载自blog.csdn.net/qq_28081081/article/details/80847573