劍指Offer 042 翻轉單詞順序列

2021-07-11 20:09:00 字數 2286 閱讀 7712

牛客oj:翻轉單詞順序列

九度oj:

github**: 042-翻轉單詞順序列

csdn題解:劍指offer–042-翻轉單詞順序列

牛客oj

九度oj

csdn題解

github**

042-翻轉單詞順序列

1361-翻轉單詞順序列

劍指offer–042-翻轉單詞順序列

042-翻轉單詞順序列

您也可以選擇回到目錄-劍指offer–題集目錄索引

題目描述

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

樣例輸入

student. a am i

i』m a freshman and i like jobdu!

樣例輸出

i am a student.

jobdu! like i and freshman a i』m

這道題主要思想就是先翻轉所有字元,再逐個單詞翻轉

然後是如何查詢到每個單詞,用指標left和right維護單詞的起始位置和結束位置

如果當前遇到乙個空格,說明發現了乙個單詞

如果找到了單詞的最後,而末尾字元不是空格,說明字串的末尾也是乙個單詞

#include 

using

namespace

std;

// 除錯開關

#define __tmain main

#ifdef __tmain

#define debug cout

#else

#define debug 0 && cout

#endif // __tmain

class solution

// 首先翻轉整個句子

reverse(str, 0, str.size( ) - 1);

// 緊接著查詢到每個單詞, 然後翻轉它

int left = 0, right = 0;

while(right <= str.size( ))

right++;

}return str;

}void reverse(string &str, int left, int right)

}void reverse(string::iterator left, string::iterator right)

也可以使用stl來實現這些功能

class solution

reverse(str.begin(), str.end());

size_t left = 0;

size_t right = 0;

while(right != string::npos)

// 如果查詢不到空格, 到了字串的末尾

// 此時[degin, str.size( )]是末尾的字串

if (right == string::npos)

else

// 否則[left, end]是乙個單詞

}return str;

}};

當然由於棧是後進先出的,因此我們可以通過棧來實現翻轉

//使用兩個棧

class solution

string result;

stack

stk1;

stack

stk2;

for (auto i : str)

}while (!stk2.empty())

return result;

}};

student. a am i

i am a student.

還有以一種思路就是從後向前,讀取到每個單詞,就開始順序的拼接它們

class solution

};

《劍指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....