题目描述
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
解题思路
两次翻转
Code
class Solution {
public:
void Reverse(string &str, int start, int end) {
while(start < end) {
char temp = str[start];
str[start] = str[end];
str[end] = temp;
start++, end--;
}
}
string ReverseSentence(string str) {
int length = str.length();
if(length) {
Reverse(str, 0, length-1);
int start = 0, end = 0;
while(start < length) {
if(str[start] == ' ') {
start++;
end = start;
} else if(str[end] == ' ' || end == length) {
Reverse(str, start, end-1);
start = end;
} else {
end++;
}
}
}
return str;
}
};
- java
public class Solution {
public String ReverseSentence(String str) {
String[] words = str.split(" ");
int len = words.length;
if(len < 1) return str;
StringBuilder sb = new StringBuilder(words[len-1]);
for(int i = len-2; i>=0; i--) {
sb.append(" "+words[i]);
}
return sb.toString();
}
}