1->求字串中重複出現的最長子串(例如:字串drgabcdeabcfh中,最長重複出現的子串為:abc)
解題方法:利用字尾樹來求解:
字串的字尾樹:(對於字串abcd來說:abcd、bcd、cd、d)那麼要求字串中出現的最長重複子串,就是找出字尾樹中的最長公共字首
int commstr(string str1,string str2)
for(int i=cur;iresult.push_back(prime[i]);
helper(n-prime[i],i,prime);
result.pop_back();
3->判斷乙個數是否是平方數
解題方法:二分法
int issqrt(int n,int low,int high)else
else }
p++;
7->字串移動(字串為*和26個字母的組合,把*移到最左側,把字母移到最右側並且保持相對位置不變)
void partitionstr(char *str)
else i--;
8->有乙個單向迴圈鍊錶,從頭開始如果到第m個就開始出隊,如此迴圈直到最後乙個元素。再把所有出隊的元素鏈結成乙個新的鍊錶。
listnode* recorder(listnode *head,int m){
listnode *p,*pre,*tail;
p=head;
listnode *newhead=new listnode(-1); //新的鍊錶的輔助頭結點
tail=newhead;
int count=1;
while(p->next!=p){
count++; pre=p; p=p->next;
if(count%m==0){
pre->next=p->next; //將p點從原表中斷開
tail->next=p; tail=p; //將p結點鏈結到新錶
p=pre->next;
tail->next=p; tail=p;
tail->next=newhead->next;
return newhead->next;
致我們終將忘記的演算法(棧的傷)
1 棧在括號匹配中的應用,乙個字串僅包含 這三種字元,判斷這個字串中的括號是否匹配 解題方法 利用棧的先進後出的功能 bool isvalid string const s stackstk for string iterator c s.begin c s.end c else if stk.em...
致我們終將忘記的演算法(單鏈表那些事)
1 乙個單鏈表l0 l1 l2 ln 1 ln,翻轉鍊錶使其成為l0 ln l1 ln 1.不能通過改變結點的值來實現 解題方法 找到鍊錶的中間結點,斷開鍊錶,把後半部分鍊錶reverse一下,再合併兩個單鏈表。演算法的時間複雜度為o n 空間複雜度為o 1 listnode reverse lis...
致我們終將逝去的青春
20幾歲的無知等於30幾歲的迷茫40幾歲的彷徨和50幾歲的無奈大學四年,白駒過隙,不要等失去後才懂得珍惜 人生可沒有彩排!二十幾歲的我們,正值青春年少,風華正茂。有的人抓住機遇,成就輝煌 有的人花天酒地,紙醉金迷.命運的轉折點就在這裡,你要不好好把握,就注定了將來的平庸無能 二十出頭的大學生,面對社...