原書中讀取字串使用了gets(),使用此函式讀取字串很危險,因此改用了fgets()替代,修改後**如下:
1 #include 2 #include 34int 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 34int 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 稱為 空佇列。佇列符合先進先出的原則...