字串反轉 演算法

2021-05-31 23:32:51 字數 1702 閱讀 8324

xiangqi 寫道

字串比如「ad2 lsdkf, lksdjf. sdkfj」倒序排列"sdkfj lksdjf. lsdkf, ad2"  每個單詞是空格分開,標點符號當作字母,不能用string的自帶的一些方法,比如indexof,trim,split等方法。

大概的偽碼,字串大的話可以用 stringbuffer 

stack t; 

string s; 

for char c : origstring 

s += c; 

} t.push(s); 

string deststring; 

while(string str = t.pop() != null) 

else

}pnewstr[len] = '\0';

strcpy(s,pnewstr);

free(pnewstr);

}int main()

棧的方法

xiangqi 寫道

字串比如「ad2 lsdkf, lksdjf. sdkfj」倒序排列"sdkfj lksdjf. lsdkf, ad2"  每個單詞是空格分開,標點符號當作字母,不能用string的自帶的一些方法,比如indexof,trim,split等方法。

大概的偽碼,字串大的話可以用 stringbuffer 

stack t; 

string s; 

for char c : origstring 

s += c; 

} t.push(s); 

string deststring; 

while(string str = t.pop() != null) 

遞迴方式

struct link_node *link_convert(struct link_node *pre_node, struct link_node *cur_node)

建議寫變數名,函式名的時候根據設計的**的功能來寫,

別人看**的時候看定義的名字就知道想實現什麼功能,

「見名知義」,有利於**的可讀性和維護性。
在main()函式裡呼叫的時候是這樣link_convert(null, pnode),確保第乙個引數為null。你自己想想吧,遞迴

鍊錶轉置很簡單的。

不知道你是需要用stl來寫還是類似c的寫法,給個簡單的例子吧

#include "stdafx.h"

#include "malloc.h"

#include "ostream.h"

typedef struct _node

node;

node * initlist()

return phead; 

}//返回尾節點

node * revert1(node * phead)

return pfather;

}//返回尾節點

node * revert2(node * phead, node * pfather = null)

void printnode(node * pnode)

}int main(int argc, char* argv)

revert1是迭代,revert2遞迴

演算法練習 反轉字串

先看看原題 編寫乙個函式,其作用是將輸入的字串反轉過來。示例 1 輸入 hello 輸出 olleh 示例 2 輸入 a man,a plan,a canal panama 輸出 amanap lanac a nalp a nam a 反向遍歷一遍字串中的所有字元,放在乙個陣列裡面,然後再遍歷一遍陣...

演算法探索 反轉字串

編寫乙個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列 char 的形式給出。不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列 使用 o 1 的額外空間解決這一問題。你可以假設陣列中的所有字元都是 ascii 碼表中的可列印字元。示例 1 輸入 h e l l o 輸出 o l l e...

演算法 反轉字串與反轉單詞

題目 將字串內容進行倒置,比如 i like beijing.經過函式後變為 gnijied ekil i。解題思路 首先題目說的很明確,就是反轉字串,不是列印,也不是建立乙個新的字串,而是改變原資料,最簡單的思路就是將第乙個字元和最後乙個交換,第二個和倒數第二個交換,依次迴圈,函式可以返回乙個標誌...