題目要求:反轉句子中單詞的順序
題目:輸入乙個英文句子,反轉句子中單詞的順序,但單詞內字元的順序不變。句子中單詞以空格符隔開。為簡單起見,標點符號和普通字元一樣處理。
例如輸入「i am a student.」,則輸出「student. a am i」
此演算法可以結合棧的資料結構實現,分割每個單詞,乙個個放入棧中,然後再乙個個彈出即可。
下面是此演算法的偽**:
void reversesentence(const string &s)
get s's size
define a singlestring to store each word
define a stack to store each single word
for i <- 0 to s.size
if s[i] is space
if the space is last word's end
then push a new word to sentence
reset singlestring
else add char to singlestring
//end for
if last word has not push into sentence
then push it into sentence
while sentence is not empty
output the word and one space
pop one value from sentence
//end while
c++實現
//get s's size
int len = s.size();
//define a singlestring to store each word
string singlestring = "";
//define a stack to store each single word
stacksentence;
//for i <- 0 to s.size
for(int i = 0; i != s.size(); ++i)
}else
}//if last word has not push into sentence
if(singlestring.size() != 0)
//while sentence is not empty
while(!sentence.empty())
cout << endl;
演算法學習(三)
快慢指標 雙指標 兩個指標指向不同元素,從而協同完成任務,主要用於遍歷元素。對撞指標,快慢指標,滑動視窗 對撞指標是指在陣列中,將指向最左側的索引定義為左指標,最右側的定義為右指標,然後從兩頭向中間進行陣列遍歷。leetcode 167 兩數之和 ii 輸入有序陣列 給定乙個已按照 公升序排列 的整...
演算法學習之單鏈表
單鏈表 包含乙個未知型別的資料以及乙個指向下乙個結點的指標 1.初始化單鏈表 建立頭結點,令他的下一結點為空 2.插入元素 遍歷該鍊錶直到到達插入點,建立新結點,載入資料,插入鍊錶 3.輸出單鏈表 遍歷整個鍊錶輸出每個結點的資料 4.輸出單鏈表長度 5.判斷單鏈表是否為空 頭結點的指標是否為空 6....
演算法學習06 單鏈表
乙個單向鍊錶基本由兩個元素組成,即資料字段和指標,而指標通常指向下乙個節點記憶體所在的位址。最後乙個節點沒有其他節點可以連線,因此指標的值為null。建立與遍歷 以動態分配產生鍊錶節點的方式,可以先行定義乙個類資料型別,要有乙個資料字段,接著在類中定義乙個指標變數,其資料型別與此類相同,作用是指向下...