請實現乙個函式用來匹配包括'.'和'*'的正規表示式。模式中的字元'.'表示任意乙個字元,而'*'表示它前面的字元可以出現任意次(包含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 在數值之前可能有乙個表示正負的 或者 接下來是若干個...