劍指offer 53字串正規表示式匹配

2021-07-29 08:45:02 字數 815 閱讀 7766

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

假設字串為str,模式串為pattern,考慮以下情況:

a. 模式串下乙個字元為*,即*(pattern+1)=='*':

如果當前字元匹配,即*str=*pattern或者*str!='\0' && *pattern='.',三種可能:

1、模式串當前字元出現0次,即*表示當前字元出現0次,則str=str,pattern=pattern+2;

2、模式串當前字元出現1次,即*表示當前字元出現1次,則str=str+1,pattern=pattern+2;

3、模式串當前字元出現2次或2次以上,即*表示當前字元出現2次或以上,則str=str+1,pattern=pattern;

如果當前字元不匹配,則只能讓*表示當前字元出現0次,則str=str,pattern=pattern+2;

b. 模式串下乙個字元不為*

如果當前字元匹配,即*str=*pattern或者*str!='\0' && *pattern='.',則str=str+1,pattern=pattern+1.

#include using namespace std;

bool match(char* str,char* pattern)

int main()

}return 0;

}

《劍指offer》53 字串的翻轉

offer53的要求是,給出乙個類似下面的句子 student.a am i 它滿足的結構是 單詞和符號本身的順序是正確的,但是句子的順序是倒序的,現在需要將其翻轉,即輸出 i am a student.python中可以利用空格對整個字串進行切片,這是個語法糖 offer53 solution 1...

劍指offer 53 表示數值的字串

請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。本題的主要解題思路如下 首先判斷字串是否為空,或者首元素是否為 若是是則直接返回false 否...

劍指offer 53 表示數值的字串

題目描述 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。輸出描述 true false 在數值之前可能有乙個表示正負的 或者 接下來是若干個...