資料結構 考研 驗證回文串

2021-10-09 07:05:34 字數 874 閱讀 3515

說明:回文串是乙個正讀和反讀都一樣的字串,我們將空字串定義為有效的回文串。

示例:輸入: "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...