說明:回文串是乙個正讀和反讀都一樣的字串,我們將空字串定義為有效的回文串。最基本的回文串問題,可以用雙指標分別由前往後檢索和由後往前檢索,如果最後相遇則是回文串。可以利用乙個棧來通過壓入前半段,來判斷後半段;或者全部壓入,再與字串從後往前比較。也可以利用遞迴的來做,與雙指標的思想實際一模一樣。示例:輸入: "level", 輸出: true。
**如下:
#include#include#includeusing namespace std;
//雙指標
bool ispalindrome1(char* s)
} return true; //while結束後返回true
} //時間複雜度o(n) 空間複雜度o(1)
//棧1
bool ispalindrome2(char* s)
return true;
} //時間複雜度o(n) 空間複雜度o(n)
//遞迴
bool ispalindrome3(char* s,int left,int right) //時間複雜度o(n) 空間複雜度o(1)
//棧2
bool ispalindrome4(char* s){
int len = strlen(s);
int i=0;
stackst;
for(int i=0;i執行結果:
考研資料結構
一 考研中的變數型別 1 基本型別 int float char 2 指標型別 3 結構體型 陣列,結構體 4 void型 考研中 定義無返回值函式。二 控制語句 1 判斷語句if 做決策 2 迴圈語句 做重複的事 for while 講講break與continue break結束整個迴圈 con...
2023年考研資料結構 4 串
從左到右乙個個匹配,如果這個過程中有某個字元不匹配,就跳回去,將模式串向右移動一位。這有什麼難的?匹配不成功,i回溯到開始,j 回溯到子串的開頭 匹配不成功,i 往後走 時間複雜度o m n 利用已經部分匹配這個有效資訊,保持i指標不回溯,通過修改j指標,讓模式串盡量地移動到有效的位置 時間複雜度o...
考研資料結構 MaxHeap
原理這裡我們建立的是最大堆,用完全二叉樹來表示這個堆 1.堆頂比兩棵子樹中的任何元素都要大 2.每棵子樹同樣滿足這個條件 即根是樹中最大值,每棵子樹的根是子樹中的最大值 所以我們在構造的時候要先從最小的子樹開始構造,這樣才能構造更大的子樹 建立大頂堆,a 1 為最大元素 typedef struct...