題目:
牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,「student. a am i」。後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是「i am a student.」。cat對一一的翻轉這些單詞順序可不在行,你能幫助他麼?
思路:這道題依然需要使用翻轉,但是與上左旋不同的是,左旋給定了翻轉的區間,這道題需要我們自己去找。
我們採用雙指標來來尋找子串的區間,i為子串起始位置,j為子串終點位置。當ch[i]等於空格時,說明沒有找到起始位置,那麼i和j都需要++,當i位置不為空格時,說明j需要來找到終點位置。然後j開始++,當找到第乙個空格時,其前乙個角標就是子串的終點位置。 此時進行翻轉,然後i=j,再次尋找下乙個子串
我們需要特殊處理的是當字串最後一位不是空格時的子串。
**實現:
public
class
solution
private
void
reverse
(char
ch,
int l,
int r)
}public string reversesentence
(string str)
int i=0;
int j=0;
char
ch=str.
tochararray()
;reverse
(ch,
0,ch.length-1)
;while
(jelse
if(ch[j]
!=' '
)else
if(ch[j]
==' '
)//處理最後子串
if(j==ch.length-
1&&ch[i]
!=' ')}
return
newstring
(ch);}
}
《劍指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....