欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c語(yǔ)言實(shí)現(xiàn)的帶通配符匹配算法

 更新時(shí)間:2015年03月23日 10:46:18   投稿:hebedich  
這篇文章主要介紹了c語(yǔ)言實(shí)現(xiàn)的帶通配符匹配算法,需要的朋友可以參考下

原創(chuàng)代碼。

‘?'代表任意單個(gè)字符,‘*'代表任意0個(gè)或多個(gè)字符。常用于文件的搜素匹配。

bool MatchWithAsteriskW(wchar_t* str1, wchar_t* pattern)
{
  if (str1 == NULL) return false;
  if (pattern == NULL) return false;
  int len1 = lstrlenW(str1);
  int len2 = lstrlenW(pattern);
  int mark = 0;//用于分段標(biāo)記,'*'分隔的字符串
  int p1 = 0, p2 = 0;
 
  while (p1<len1 && p2<len2)
  {
    if (pattern[p2] == '?')
    {
      p1++;
      p2++;
      continue;
    }
    if (pattern[p2] == '*')
    {
      /*如果當(dāng)前是*號(hào),則mark前面一部分已經(jīng)獲得匹配,
      *從當(dāng)前點(diǎn)開(kāi)始繼續(xù)下一個(gè)塊的匹配
      */
      p2++;
      mark = p2;
      continue;
    }
    if (str1[p1] != pattern[p2])
    {
      if (p1 == 0 && p2 == 0)
      {
        /*
        * 如果是首字符,特殊處理,不相同即匹配失敗
        */
        return false;
      }
      /*
      * pattern: ...*bdef*...
      *       ^
      *       mark
      *        ^
      *        p2
      *       ^
      *       new p2
      * str1:.....bdcf...
      *       ^
      *       p1
      *      ^
      *     new p1
      * 如上示意圖所示,在比到e和c處不想等
      * p2返回到mark處,
      * p1需要返回到下一個(gè)位置。
      * 因?yàn)?前已經(jīng)獲得匹配,所以mark打標(biāo)之前的不需要再比較
      */
      p1 -= p2 - mark - 1;
      p2 = mark;
      continue;
    }
    /*
    * 此處處理相等的情況
    */
    p1++;
    p2++;
  }
  if (p2 == len2)
  {
    if (p1 == len1)
    {
      /*
      * 兩個(gè)字符串都結(jié)束了,說(shuō)明模式匹配成功
      */
      return true;
    }
    if (pattern[p2 - 1] == '*')
    {
      /*
      * str1還沒(méi)有結(jié)束,但pattern的最后一個(gè)字符是*,所以匹配成功
      *
      */
      return true;
    }
  }
  while (p2<len2)
  {
    /*
    * pattern多出的字符只要有一個(gè)不是*,匹配失敗
    *
    */
    if (pattern[p2] != '*')
      return false;
    p2++;
  }
  return true;
}

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • c++中map的基本用法和嵌套用法實(shí)例分析

    c++中map的基本用法和嵌套用法實(shí)例分析

    這篇文章主要介紹了c++中map的基本用法和嵌套用法,以實(shí)例形式分析了map容器的基本使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • C語(yǔ)言詳細(xì)講解常用字符串處理函數(shù)

    C語(yǔ)言詳細(xì)講解常用字符串處理函數(shù)

    在日常編程中,對(duì)于字符串的操作中我們都很習(xí)慣的使用一些C庫(kù)中自帶的函數(shù),并且關(guān)于字符串的操作函數(shù)基本都在 string.h 這個(gè)頭文件中。關(guān)于C庫(kù)字符串常用處理函數(shù)也是平時(shí)面試或者考試過(guò)程中非常喜歡考的,本文將帶大家手動(dòng)來(lái)實(shí)現(xiàn)這些常用函數(shù)
    2022-05-05
  • C語(yǔ)言舉例講解i++與++i之間的區(qū)別

    C語(yǔ)言舉例講解i++與++i之間的區(qū)別

    這篇文章主要介紹了C語(yǔ)言中i++和++i的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C++淺析析構(gòu)函數(shù)的特征

    C++淺析析構(gòu)函數(shù)的特征

    既然在創(chuàng)建對(duì)象時(shí)有構(gòu)造函數(shù)(給成員初始化),那么在銷毀對(duì)象時(shí)應(yīng)該還有一個(gè)清除成員變量數(shù)據(jù)的操作咯,析構(gòu)函數(shù)與構(gòu)造函數(shù)功能相反,析構(gòu)函數(shù)不是完成對(duì)象的銷毀,局部對(duì)象銷毀工作是由編譯器完成的。而對(duì)象在銷毀時(shí)會(huì)自動(dòng)調(diào)用析構(gòu)函數(shù),完成類的一些資源清理工作
    2022-07-07
  • c++大數(shù)階乘的實(shí)現(xiàn)方法

    c++大數(shù)階乘的實(shí)現(xiàn)方法

    本篇文章對(duì)c++的大數(shù)階乘進(jìn)行了代碼示例的介紹。需要的朋友參考下
    2013-05-05
  • OpenCV提取圖像中圓線上的數(shù)據(jù)具體流程

    OpenCV提取圖像中圓線上的數(shù)據(jù)具體流程

    在對(duì)圖像進(jìn)行處理時(shí),經(jīng)常會(huì)要提取出圖像中某條直線、圓線或者ROI區(qū)域內(nèi)的感興趣數(shù)據(jù),進(jìn)行重點(diǎn)關(guān)注。本文主要介紹了利用OpenCV獲取圖像中圓線上的數(shù)據(jù),需要的可以參考一下
    2021-11-11
  • C++寬字符與普通字符的轉(zhuǎn)換實(shí)例詳解

    C++寬字符與普通字符的轉(zhuǎn)換實(shí)例詳解

    這篇文章主要介紹了C++寬字符與普通字符的轉(zhuǎn)換實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C語(yǔ)言實(shí)現(xiàn)停車場(chǎng)管理系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)停車場(chǎng)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)停車場(chǎng)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • C語(yǔ)言實(shí)現(xiàn)圖書(shū)館管理系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)圖書(shū)館管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)圖書(shū)館管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Qt實(shí)現(xiàn)繪制一個(gè)簡(jiǎn)單多邊形的示例代碼

    Qt實(shí)現(xiàn)繪制一個(gè)簡(jiǎn)單多邊形的示例代碼

    QT提供了圖形繪制接口QPainter,通過(guò)該接口可以繪制多種圖形,包括多邊形。本文就來(lái)利用它實(shí)現(xiàn)繪制一個(gè)簡(jiǎn)單的多邊形,感興趣的可以嘗試一下
    2022-11-11

最新評(píng)論