<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      KMP

      KMP:子串在對(duì)父串每一次匹配失敗時(shí),右移位數(shù)的優(yōu)化。

      右移位數(shù) = 已匹配的字符數(shù) - 對(duì)應(yīng)的部分匹配值

      前綴:字串中,除了最后一個(gè)字符,包含第一個(gè)字符的全部字串組合

      后綴:字串中,除了第一個(gè)字符,包含最后一個(gè)字符的全部字串組合

      部分匹配值:前綴和后綴所有字串中包含有共同字符的字符個(gè)數(shù)

      部分匹配表:首字符開(kāi)始,下標(biāo)對(duì)應(yīng)于KMP數(shù)組下標(biāo),每個(gè)KMP數(shù)組元素值為首字符到當(dāng)前字符字串的匹配值。

      eg:根據(jù)子串KMP推導(dǎo)右移個(gè)數(shù)

          ETCABCDABETC

                       ABCDABD

          子串第7位匹配失敗,查表PMT[6],右移位數(shù) = 6 - PMT[6] = 4,右移4位。

      eg:手動(dòng)推導(dǎo)子串KMP

          子串:ABCDABD

          

       

       

      KMP實(shí)現(xiàn):

           1. PMT[0] = 0;子串第一個(gè)字符組成的字串的前后綴匹配值都為0。如果可選L都為0,直接對(duì)比首尾元素。

           2. 從PMT[1]開(kāi)始推導(dǎo),LL為當(dāng)前計(jì)算子串的前后交集元素最長(zhǎng)長(zhǎng)度,如果sub_str[LL] = sub_str[i],則當(dāng)前LL加 1

           3. 如果sub_str[LL] != sub+str[i],則LL = KMP[LL - 1],直到sub_str[LL] = sub_str[i]。

      實(shí)現(xiàn)代碼:

      int* String::make_mtp(const char* up_str)
          {
              int ll = 0;
              int len = strlen(up_str);
              int* pmt = static_cast<int*>(malloc(sizeof(int) * len));
      
              if(pmt != NULL)
              {
                  pmt[0] = 0;
                  for(int i = 0; i < len; i++)
                  {
                      while((ll > 0) && (pmt[ll] != pmt[i]))
                      {
                          ll = pmt[ll - 1];            
                      }
      
                      if(pmt[ll] == pmt[i])
                      {
                          ++ll;
                      }
                  }
              }
              return pmt;
          }
      
          int String::kmp(const char* up_str, const char* sub_str)
          {
              int ret = -1;
              int up_len = strlen(up_str);
              int sub_len = strlen(sub_str);
              int* pmt = make_mtp(up_str);
      
              if((pmt != NULL && up_len >= sub_len && sub_len > 0))
              {
                  for(int i = 0, j = 0;i < up_len ;i++)
                  {
                      while(j > 0 && up_str[i] != sub_str[j])
                      {
                          j = pmt[j - 1];
                      }
                      if(up_str[i] == sub_str[j])
                      {
                          j++;
                      }
                      if(j == sub_len)
                      {
                          ret = i + 1 - sub_len;
                          break;
                      }
                  }
              }
              free(pmt);
              return ret;
          }

       

       

       

            

       

          

       

      posted @ 2020-02-08 23:47  張不源  Views(249)  Comments(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 精品人人妻人人澡人人爽人人 | 中文字幕av日韩有码| 亚洲成人av一区二区| 久久综合偷拍视频五月天| 99久久精品免费看国产电影| 精品一区二区三区无码视频| 色欲综合久久中文字幕网| 国产伦精品一区二区三区| 久热爱精品视频线路一| 欧美午夜精品久久久久久浪潮| 亚洲欧美精品一中文字幕| 亚洲最大av一区二区| 欧美高清精品一区二区| 午夜国产理论大片高清| 国产午夜福利不卡在线观看| 亚洲综合久久一区二区三区| 四虎国产精品永久免费网址| 亚洲三区在线观看无套内射| 深夜av在线免费观看| 久热久视频免费在线观看| 亚洲国产成人久久77| 欧美极品色午夜在线视频| 这里只有精品免费视频| 国产在线午夜不卡精品影院| 国产偷倩视频| 国产精品美女www爽爽爽视频| 国产91精品一区二区亚洲| 九九综合va免费看| 人妻系列无码专区69影院| 黑巨人与欧美精品一区| 国产99在线 | 免费| 精品无码一区二区三区在线| 九九热视频在线观看一区| 日本道播放一区二区三区| 色综合视频一区二区三区| 男人猛躁进女人免费播放| 欧洲人与动牲交α欧美精品| 亚洲国产一区二区三区亚瑟| 枣阳市| 亚洲一区二区三区黄色片| 欧美白妞大战非洲大炮|