牛客最近來了一個新員工Fish,每天早晨總是會拿着一本英文雜誌,寫些句子在本子上。同事Cat對Fish寫的內容頗感興趣,有一天他向Fish借來翻看,但卻讀不懂它的意思。例如,“student. a am I”。後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是“I am a student.”。Cat對一一的翻轉這些單詞順序可不在行,你能幫助他麼?
class Solution {
//步驟1:先翻轉整個句子
//步驟2:然後翻轉每個單詞
public:
//實現翻轉功能
void Reverse(int begin, int end, string &str){
while(begin < end){
char temp = str[begin];
str[begin] = str[end];
str[end] = temp;
begin ++;
end --;
}
}
string ReverseSentence(string str) {
// 定義字符串的長度len
int len = str.length();
//當字符串爲空或者長度爲1時直接返回原字符串
if(len <= 1)
return str;
//翻轉整個句子
Reverse(0,len-1,str);
//翻轉每個單詞
int begin = 0;
int end = 0;
int i = 0;
while(i < len){
while(i < len && str[i] == ' ')
i ++;
begin = end = i;
//遍歷一個單詞,每遍歷一個字母end++,i++
while(i < len && str[i] != ' '){
i ++;
end ++;
}
Reverse(begin,end-1,str);
}
return str;
}
};