第44题——翻转单词顺序列

144 阅读1分钟

题目:

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

思路:

将str各个单词转换为数组元素,利用for循环,将其颠倒装进StringBuilder

Java

package nowcoder;

public class S44_ReverseSentence {
    public String ReverseSentence(String str){
        if (str.trim().equals(""))
            return str;
        StringBuilder sb = new StringBuilder();
        //切分str,依据空格
        String[] buffer = str.split(" ");
        for (int i=buffer.length-1;i>=0;i--){
            sb.append(buffer[i]);
            if (i > 0)
                sb.append(" ");
        }
        return sb.toString();
    }
    public static void main(String[] args){
        S44_ReverseSentence s44 = new S44_ReverseSentence();
        String str = "student. a am I";
        System.out.println(s44.ReverseSentence(str));
    }
}

Python

class ReverseSentence:
    def ReverseSentence(self,str):
        return " ".join(str.split(" ")[::-1])
if __name__ == '__main__':
    test = ReverseSentence()
    str = "student. a am I"
    print(test.ReverseSentence(str))

或者

class ReverseSentence:
    def ReverseSentence(self,str):
        buffer = str.split(" ")
        res = ""
        for i in range(len(buffer)-1, -1, -1):
            res += buffer[i]
            if i>0:
                res += " "
        return res
if __name__ == '__main__':
    test = ReverseSentence()
    str = "student. a am I"
    print(test.ReverseSentence(str))