微軟等資料結構與演算法面試100題 第十題

2021-06-08 15:42:18 字數 943 閱讀 4193

第十題

翻轉句子中單詞的順序。

題目:輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。

句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。

例如輸入「i am a student.」,則輸出「student. a am i」。

分析:可以根據空格符將單詞分開,然後針對每個單詞進行操作,string型別的有很多庫函式,比如可以實現分割string型別的字串。

這裡使用c++實現,本來是想使用split函式進行分割的,但是msdn上string物件成員函式

split函式示例執行不對,然後就採用查詢空格來分割。希望有大牛指出split成員函式的問題。

**如下:

#include#includeusing namespace std;

using std::string;

void reversesequence(string & words)

//conduct statistics

int wordsnum = 0;

for(int i = 0; i < words.length(); i++)

wordsnum = wordsnum + 1;

int *arraylength = new int[wordsnum];

for(int i =0 ; i < wordsnum; i++)arraylength[i] = 0;

int j = 0;

for(int i = 0; i < lengthwords; i++)

//reverse each words

int index;

int currentindex = 0;

for(int i =0 ; i < wordsnum; i++)

{ index = currentindex;

while(index

微軟等資料結構與演算法面試100題 第五題

第五題 查詢最小的k個元素 題目 輸入n個整數,輸出其中最小的k個。例如輸入1,2,3,4,5,6,7和8這8個數字,則最小的4個數字為1,2,3和4。分析 本題目要求計算n個整數的最小的k個,題目沒有直接給出複雜度的要求,因此有很多種解法。比如排序後一次輸出等 很多種解法。如果是要求複雜度為klo...

微軟等資料結構與演算法面試100題 第七題

第七題 微軟亞院之程式設計判斷倆個鍊錶是否相交 給出倆個單向鍊錶的頭指標,比如h1,h2,判斷這倆個鍊錶是否相交。為了簡化問題,我們假設倆個鍊錶均不帶環。問題擴充套件 1.如果鍊錶可能有環列?2.如果需要求出倆個鍊錶相交的第乙個節點列?分析 實現 includeusing namespace std...

微軟等資料結構與演算法面試100題 第十五題

第十五題 題目 輸入一顆二元查詢樹,將該樹轉換為它的映象,即在轉換後的二元查詢樹中,左子樹的結點都大於右子樹的結點。用遞迴和迴圈兩種方法完成樹的映象轉換。分析 題目要求求解乙個二元搜尋樹的映象,用兩種方法實現,遞迴和非遞迴。首先,對於求解乙個二元搜尋樹映象其實就是把樹中的每個節點的左右子樹調換了即可...