日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

道指mt4代码_剑指offer算法题052:正则表达式匹配

發布時間:2023/12/3 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 道指mt4代码_剑指offer算法题052:正则表达式匹配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
小編在求職找找工作期間劍指offer上的算法題刷了很多遍,并且每道題小編當時都總結了一種最適合面試時手撕算法的最優解法。考慮到劍指offer算法題在面試中的高頻出現,小編每天和大家分享一道劍指offer上的算法題,以及小編總結的答案。下面是第052是道劍指offer算法題

題目描述

請實現一個函數用來匹配包括'.'和'*'的正則表達式。模式中的字符'.'表示任意一個字符,而'*'表示它前面的字符可以出現任意次(包含0次)。在本題中,匹配是指字符串的所有字符匹配整個模式。例如,字符串"aaa"與模式"a.a"和"ab*ac*a"匹配,但是與"aa.a"和"ab*a"均不匹配分析:

題解在注釋中,相對之前的題目,這道題難度更大些。

/* 解這題需要把題意仔細研究清楚,反正我試了好多次才明白的。 首先,考慮特殊情況: 1>兩個字符串都為空,返回true 2>當第一個字符串不空,而第二個字符串空了,返回false(因為這樣,就無法 匹配成功了,而如果第一個字符串空了,第二個字符串非空,還是可能匹配成 功的,比如第二個字符串是“a*a*a*a*”,由于‘*’之前的元素可以出現0次, 所以有可能匹配成功) 之后就開始匹配第一個字符,這里有兩種可能:匹配成功或匹配失敗。但考慮到pattern 下一個字符可能是‘*’, 這里我們分兩種情況討論:pattern下一個字符為‘*’或 不為‘*’: 1>pattern下一個字符不為‘*’:這種情況比較簡單,直接匹配當前字符。如果 匹配成功,繼續匹配下一個;如果匹配失敗,直接返回false。注意這里的 “匹配成功”,除了兩個字符相同的情況外,還有一種情況,就是pattern的 當前字符為‘.’,同時str的當前字符不為‘\0’。 2>pattern下一個字符為‘*’時,稍微復雜一些,因為‘*’可以代表0個或多個。 這里把這些情況都考慮到: a>當‘*’匹配0個字符時,str當前字符不變,pattern當前字符后移兩位, 跳過這個‘*’符號; b>當‘*’匹配1個或多個時,str當前字符移向下一個,pattern當前字符 不變。(這里匹配1個或多個可以看成一種情況,因為:當匹配一個時, 由于str移到了下一個字符,而pattern字符不變,就回到了上邊的情況a; 當匹配多于一個字符時,相當于從str的下一個字符繼續開始匹配) 之后再寫代碼就很簡單了。*/class Solution {public: bool match(char* str, char* pattern){ if (*str == '\0' && *pattern == '\0') return true; if (*str != '\0' && *pattern == '\0') return false; //if the next character in pattern is not '*' if (*(pattern+1) != '*') { if (*str == *pattern || (*str != '\0' && *pattern == '.')) return match(str+1, pattern+1); else return false; } //if the next character is '*' else { if (*str == *pattern || (*str != '\0' && *pattern == '.')) return match(str, pattern+2) || match(str+1, pattern); else return match(str, pattern+2); } }};

猜你還想看

一個程序員寫多門語言,寫代碼時會記串么?計算機專業學生,最應該學習的課程前五位是什么?

長按,掃碼,關注

及時收看更多精彩內容

博主:今日頭條大數據工程師專注:求職 面經 源碼 java 大數據技術分享

點擊”閱讀原文“:領取5T精品資料面試總結100+實戰項目

我知道你 “在看

總結

以上是生活随笔為你收集整理的道指mt4代码_剑指offer算法题052:正则表达式匹配的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。