题目描述
牛客最近来了一个新员工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"));
}
}