啊哈!演算法 解密回文

2022-09-17 10:54:11 字數 1011 閱讀 8132

原書中讀取字串使用了gets(),使用此函式讀取字串很危險,因此改用了fgets()替代,修改後**如下:

1 #include 2 #include 34

int main(void)5

1718

//判斷字串長度是奇數還是偶數,以決定需要匹配的後半部分起始下標

19 next = (len % 2) ? (mid+2) : (mid+1

);20

21//

開始匹配

22for (i = next; i <= len - 1; i++)

2627

//驗證結果

28if (top == 0

)29 printf("

yes\n");

30else

31 printf("

no\n");

3233

return0;

34 }

gets()與fgets()之間的區別,請參看我的另一篇文章《字串讀取引申的問題》,只是要注意的是輸入字串請採用重定向哦,如果手工輸入再回車會導致strlen()返回的長度比實際長度大1,原因是多讀入了乙個換行符。

當然,也沒必要非要把這個問題搞這麼複雜,因為字串儲存在乙個字元陣列中,在知道字串長度的情況下,我們完全可以通過兩個指標,乙個指向第乙個字元,另乙個指向最後乙個字元,比較兩者是否相等。如果相等,兩個指標就同時向中間移動乙個元素,進行下一輪比較;如果不等,則比較結束,表示該字串不是回文字串;如果直到指標移動到中間位置任然不存在不相等的情況,則表示該字串是回文字串。**如下:

1 #include 2 #include 34

int ishuiwen(char s, int

len)

11return1;

12}1314

int main(void)15

else

2829

return0;

30 }

啊哈演算法C2 S2 解密回文 棧

與佇列不同,棧的插入和刪除遵循lifo原則。對棧的操作只需要乙個一維陣列,乙個指向棧頂的變數top即可。通過top來對棧進行插入和刪除。下面通過判斷回文案例來說明 示例 pandas 是基於numpy 的一種工具,該工具是為了解決資料分析任務而建立的。include include using na...

演算法1 啊哈演算法!

首先這裡會有乙個簡單的排序演算法。問題 0 10內的數排序,假如有五個人的分數為為9,1,2,4,5 思路 include int main for i 0 i 10 i 依次判斷a 0 a 10 for j 1 j a i j 出現了幾次就列印幾次 printf d i getchar getch...

Queue 啊哈演算法

下面摘錄啊哈演算法中的重點片段及queue實現 同時總結資料結構佇列的常見用法 佇列是一種特殊的線性結構,它只允許在佇列的首部 head 進行刪除操作,這稱為 出隊 而在佇列 的尾部 tail 進行插入操作,這稱為 入隊 當佇列中沒有元素時 即head tail 稱為 空佇列。佇列符合先進先出的原則...