亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

使用C語言解決字符串匹配問題的方法

2020-01-26 14:58:44
字體:
來源:轉載
供稿:網友

最常想到的方法是使用KMP字符串匹配算法:

#include <stdio.h>#include <stdlib.h>#include <string.h>int get_nextval(char *pattern, int next[]){  //get the next value of the pattern   int i = 0, j = -1;  next[0] = -1;  int patlen = strlen(pattern);  while ( i < patlen - 1){    if ( j == -1 || pattern[i] == pattern[j]){      ++i;      ++j;      if (pattern[i] != pattern[j])        next[i] = j;      else        next[i] = next[j];    }    else      j = next[j];    }  return(0);}int kmpindex(char *target, char *pattern, int pos){  int tari = pos, pati = 0;   int tarlen = strlen(target), patlen = strlen(pattern);  int *next = (int *)malloc(patlen * sizeof(int));  get_nextval(pattern, next);  while ( tari < tarlen && pati < patlen ){    if (pati == -1 ||target[tari] == pattern[pati]){      ++tari;      ++pati;      }else{        pati = next[pati];      }  }  if(next != NULL) free(next);next = NULL;if (pati == patlen)  return tari - pati;else  return -1;}int main(){  char target[50], pattern[50];  printf("imput the target:/n" );  scanf("%s",target);  printf("imput the pattern:/n" );  scanf("%s",pattern);  int ans = kmpindex(target,pattern,0);  if (ans == -1)    printf("error/n");  else    printf("index:%d/n",ans);  return 0;}


練習題
    題目描述: 
        讀入數據string[ ],然后讀入一個短字符串。要求查找string[ ]中和短字符串的所有匹配,輸出行號、匹配字符串。匹配時不區分大小寫,并且可以有一個用中括號表示的模式匹配。如“aa[123]bb”,就是說aa1bb、aa2bb、aa3bb都算匹配。 
    輸入: 
    輸入有多組數據。 
    每組數據第一行輸入n(1<=n<=1000),從第二行開始輸入n個字符串(不含空格),接下來輸入一個匹配字符串。 
    輸出: 
    輸出匹配到的字符串的行號和該字符串(匹配時不區分大小寫)。 
    樣例輸入: 
    4 
    Aab 
    a2B 
    ab 
    ABB 
    a[a2b]b 
    樣例輸出: 
    1 Aab 
    2 a2B 
    4 ABB 


ac代碼

 

  #include <stdio.h>   #include <stdlib.h>   #include <string.h>       #define MAX 1001   #define LEN 101       struct str   {     char name[101];   };       int main()   {     struct str strs[MAX];     struct str t[LEN];     int i, n, len, j, k, left, right, count, flag;     char text[LEN], newtext[LEN];         while (scanf("%d", &n) != EOF) {       // 接收數據       getchar();       for (i = 0; i < n; i ++) {         scanf("%s", strs[i].name);       }           // 接收文本串       getchar();       gets(text);       len = strlen(text);           for (i = left = right = 0; i < len; i ++) {         if (text[i] == '[') {           left = i;         } else if (text[i] == ']') {           right = i;           break;         }       }       count = right - left - 1;           if (count <= 0) {  // 沒有正則匹配         for (i = j = 0; i < len; i ++) {           if (text[i] != '[' && text[i] != ']') {             newtext[j ++] = text[i];           }         }         newtext[j] = '/0';         for (i = 0; i < n; i ++) {           if (strcasecmp(strs[i].name, newtext) == 0) {             printf("%d %s/n", i + 1, strs[i].name);           }         }       }else { // 需要正則匹配         for (j = 1, k = 0; j <= count; j ++, k ++) { // 構建文本數組           memset(t[k].name, '/0', sizeof(t[k].name));           for (i = 0; i < left; i ++) {             t[k].name[i] = text[i];           }           t[k].name[i] = text[left + j];           strcat(t[k].name, text + right + 1);           }                   // 正則匹配          for (i = 0; i < n; i ++) {           for (j = flag = 0; j < count; j ++) {             if (strcasecmp(strs[i].name, t[j].name) == 0) {               flag = 1;               break;             }           }           if (flag) {             printf("%d %s/n", i + 1, strs[i].name);           }         }       }         }         return 0;   } 

    /**************************************************************
        Problem: 1165
        User: wangzhengyi
        Language: C
        Result: Accepted
        Time:0 ms
        Memory:948 kb
    ****************************************************************/

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品电影在线观看| 亚洲大胆人体视频| 欧美日韩不卡合集视频| 久久久久www| 色综合五月天导航| 亚洲精品视频在线播放| 日韩国产精品视频| 在线看欧美日韩| 77777亚洲午夜久久多人| 国产香蕉精品视频一区二区三区| 国产999精品久久久| 国产精品久久综合av爱欲tv| 韩国国内大量揄拍精品视频| xxx成人少妇69| 亚洲精品www久久久久久广东| 亚洲国产另类 国产精品国产免费| 最近2019年日本中文免费字幕| 国产视频999| 亚洲国产精品成人一区二区| 一本色道久久综合亚洲精品小说| 国产精品免费视频xxxx| 亚洲成人激情小说| 精品久久中文字幕久久av| 成人免费激情视频| 国产精品日本精品| 日韩电影第一页| 欧美亚洲免费电影| 亚洲天堂av在线播放| 亚洲一品av免费观看| 亚洲人成啪啪网站| 2019中文字幕免费视频| 日韩在线视频观看正片免费网站| 91精品国产自产在线| 国产盗摄xxxx视频xxx69| 久久免费福利视频| 国产精品中文字幕久久久| 亚洲精品乱码久久久久久按摩观| 国产欧美日韩丝袜精品一区| 精品国产乱码久久久久久天美| 欧美一级免费看| 色哟哟入口国产精品| 日韩在线视频免费观看高清中文| 欧美日韩亚洲激情| 日韩美女视频在线观看| 国产亚洲精品一区二555| 日韩成人高清在线| 97国产精品视频| 亚洲精品日韩欧美| 亚洲欧美一区二区三区四区| 久久97精品久久久久久久不卡| 热re99久久精品国产66热| 日韩精品在线免费观看| 日韩成人免费视频| 国产一区二区三区在线| 欧美亚洲另类制服自拍| 日韩欧美一区二区在线| 日韩欧美成人网| 亚洲人成在线电影| 欧美日韩免费区域视频在线观看| 国产精品人成电影| 亚洲精品国精品久久99热| 亚州国产精品久久久| x99av成人免费| 亚洲一区二区三区xxx视频| 亚洲国内精品在线| 亚洲free性xxxx护士白浆| 北条麻妃99精品青青久久| 欧美日本在线视频中文字字幕| 久久精品美女视频网站| 色中色综合影院手机版在线观看| 色噜噜国产精品视频一区二区| 欧美激情在线观看视频| 成人国产亚洲精品a区天堂华泰| 欧美午夜www高清视频| 一区二区三区回区在观看免费视频| 欧美日韩精品在线观看| 日本19禁啪啪免费观看www| 国产精品久久在线观看| 欧美另类精品xxxx孕妇| 国产不卡在线观看| 九九热99久久久国产盗摄| 在线电影中文日韩| 国产成人综合av| 日韩av网站导航| 日本一欧美一欧美一亚洲视频| 久久久久久美女| 成人欧美一区二区三区黑人孕妇| 色综合五月天导航| 久操成人在线视频| 久久久久久97| 在线播放日韩欧美| 国产精品香蕉国产| 欧美性xxxx极品hd满灌| 最近2019免费中文字幕视频三| 色综合天天狠天天透天天伊人| 九九视频这里只有精品| 欧美亚洲国产成人精品| 国产欧美一区二区三区久久人妖| 91精品在线观看视频| 欧美亚洲视频在线观看| 国产成人精品av在线| 精品无人国产偷自产在线| 国产精品一区二区电影| 国产精品永久免费视频| 国产原创欧美精品| 久久伊人91精品综合网站| 成人女保姆的销魂服务| 国产日韩av高清| 久久久爽爽爽美女图片| 午夜精品久久久久久久久久久久| 中文字幕9999| 国产亚洲欧洲高清| 亚洲一区二区中文字幕| 日韩电影在线观看永久视频免费网站| 欧美色另类天堂2015| 亚洲天堂久久av| 8090成年在线看片午夜| 欧美精品制服第一页| 一区二区亚洲精品国产| 亚洲性猛交xxxxwww| 久久久精品欧美| 亚洲性夜色噜噜噜7777| 亚洲午夜久久久久久久| 亚洲一区二区三区777| 日韩欧美成人免费视频| 亚洲福利在线播放| 久久激情视频久久| 国产精品吊钟奶在线| 欧美理论片在线观看| 亚洲国产精品va在线观看黑人| 成人欧美一区二区三区在线湿哒哒| 26uuu另类亚洲欧美日本一| 久久久国产影院| 亚洲国产91色在线| 7m精品福利视频导航| 久久6精品影院| 国产成人精品av在线| 成人黄色在线播放| 亚洲精品成人免费| 韩国三级日本三级少妇99| 久久久久久网站| 精品国产一区二区三区久久狼5月| 中文字幕在线成人| 性金发美女69hd大尺寸| 亚洲精品98久久久久久中文字幕| 亚洲欧美另类国产| 国产做受69高潮| 亚洲人成在线观| 亚洲高清一二三区| 秋霞成人午夜鲁丝一区二区三区| 国产亚洲精品一区二区| 97在线观看视频国产| 欧美黄色三级网站| 91精品视频在线看| 欧美日韩在线免费| 精品露脸国产偷人在视频| 亚洲国产美女久久久久| 91九色国产视频| 午夜精品久久久久久久男人的天堂| 91av在线国产| 久久久久久69| 中文亚洲视频在线| 国产精品午夜一区二区欲梦| 欧美一乱一性一交一视频|