C C 學習筆記32 字串操作與字元子串問題

2021-06-23 10:03:00 字數 1224 閱讀 2152

前面給出了很多關於對於字元、字串的問題。關於字串與字元子串的處理問題有很多是可以研究的。之前的總結大致有:字元與字串的區別、字元與字串的處理函式、資料結構中的關於串的知識點、資料結構中關於字串的模式匹配問題,大致上有兩個演算法:樸素的模式匹配演算法和kmp模式匹配的演算法。

字元與字串的區別:

字元與字串處理函式:

資料結構與字串的問題:

這裡我們用經典的案列來把上面的所有內容再溫習一遍:

e.g.1刪除字串中給定的子串

問題描述:在給定的字串中查詢特定子串並刪除,如果沒有子串則不作任何操作

要求實現函式:

int delete_sub_str(const char *str,const char sub_str,const *result_str);
【輸入】str:輸入的被操作字串

sub_str:需要查詢並刪除的特定子串

【輸出】result_str:在str字串中刪除所有sub_str子字串後的結果

【返回】刪除子字串的個數

分析:這個問題就是有乙個特定的字串,在特定的字串中先查詢子串的操作,重點在於查詢子串。關於查詢子串其實就是模式匹配的問題。我們先用資料結構中兩種模式匹配演算法找到相應的子串位置。再來解決上述問題。

樸素模式匹配演算法:

#include #include #include "string"

int index(char str ,char sub,int pos)

int main()

kmp模式匹配演算法:

說明:存放子串和主串的陣列的首個元素存放字串的長度。

#include #include /*獲得子串next陣列*/

void get_next(char str,int *next)

int main()

;int sub=;

int m=index_kmp(str,sub,1);

printf("子串在主串中的位置是:%d\n",m);

return 0;

}

題型分析:

題型思路,首先用子串去與主串比較,如果不相等,則保留,放在陣列reslut_str中。如果相等則繼續比較。

當比較完成以後,判斷sub_str[i]是否到了結束字元'\0'。如果判斷結束了則在進行計數:

C C 學習筆記筆記28 字元與字串

字串是資料結構中相對簡單的一種資料結構。關於字串的基本知識 1 字元與字串 字元常量 字元常量是用單撇號括起來的乙個字元 常見的控制字元也是一種特殊形式的字元常量,以 開頭的字串行,在螢幕上不能顯示的 2 字元與字串的儲存 1 字元 將乙個字元常量放到乙個字元變數中,實際上並不是把該字元本身放到記憶...

C C 學習筆記29 字串處理函式

常見的字串處理函式有 size t strlen cs 求出cs的長度gets str puts str char strcpy s,ct 把ct複製到s中去 char strncpy s,ct,n 把ct中的n個字元複製到s中去char strcat s,ct 把ct複製到s字串之後 char s...

python學習筆記 二 字串操作

該一系列python學習筆記都是根據 python基礎教程 第3版 內容所記錄整理的 所有標準序列操作 索引 切片 乘法 成員資格檢查 長度 最小值和最大值 都適用於字串,但字串是不可變的,所有元素賦值 切片賦值等操作都是非法的。這裡設定字串格式的基本思想是對字串呼叫方法format,並提供要設定其...