劍指Offer 42 1 翻轉單詞順序

2021-09-24 13:59:57 字數 1028 閱讀 4984

題目:

牛客最近來了乙個新員工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....