劍指offer 翻轉單詞順序列

2021-09-10 22:35:28 字數 1306 閱讀 5954

牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,「student. a am i」。後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是「i am a student.」。cat對一一的翻轉這些單詞順序可不在行,你能幫助他麼?

以單詞為單位,通過split,將字串轉換為陣列,倒序遍歷陣列,並將陣列中的值放入stringbuffer中並加上空格。

public class solution 

string strs=str.split(" ");

stringbuffer sb=new stringbuffer();

for(int i=strs.length-1;i>=0;i--)

}return sb.tostring();

}}

當然,這種方法並不是面試官期望的方法。

這類題的通用解法就是按照字元翻轉,進行兩次翻轉。左旋轉字串,這道題也是一樣的方法。

step1:將整個句子先進行一次翻轉。

step2:針對句子內部的每個單詞,以空格為分隔符,進行 第二次翻轉。

public class solution 

char strs=str.tochararray();

//首先反轉整個句子

reverse(strs,0,strs.length-1);

//然後依次反轉句子中的每個單詞

int begin=0;

int end=0;

while(beginelse

}return string.valueof(strs);

}private void reverse(char strs,int begin,int end)

}}

public class solution 

char strs=str.tochararray();

//對句子進行整體翻轉

reverse(strs,0,strs.length-1);

//翻轉句子中的每個單詞

int blank=-1;

for(int i=0;i}

reverse(strs,blank+1,strs.length-1);

return new string(strs);

}private void reverse(char strs, int begin, int end)

}}

《劍指offer》 翻轉單詞順序列

牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,student.a am i 後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是 i am a student....

劍指offer 翻轉單詞順序列

牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,student.a am i 後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是 i am a student....

劍指offer 翻轉單詞順序列

牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,student.a am i 後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是 i am a student....