剑指offer 42题 【知识迁移能力】翻转单词顺序列

来源:互联网 发布:复杂网络 混沌 编辑:程序博客网 时间:2024/06/01 10:04

题目描述

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

牛客传送门:点击打开链接

思路:先翻转整个字符串、然后从头开始遍历,遇到空格则翻转,注意边界值。
public class Title42 {public String ReverseSentence(String str) {        if(str == null || str.length() == 0)        return str;        char[] s = str.toCharArray();                // 旋转一次        rotate(s,0,s.length-1);                int begin=0;        for(int i=1;i<s.length;i++){        if(s[i] == ' '){        rotate(s,begin,i-1);        begin = i+1;        // 注意边界值的处理        }else if(i == s.length-1){        rotate(s,begin,i);        }        }                return String.valueOf(s);    }public void rotate(char[] s,int begin,int end){while(begin < end){char temp = s[begin];s[begin] = s[end];s[end] = temp;begin++;end--;}}public static void main(String[] args) {System.out.println(new Title42().ReverseSentence("student. a am I"));}}

0 0