華為OD機(jī)試- 增強(qiáng)的strstr
c 語言有一個庫函數(shù): char*strstr(const char *haystack, const char*needle),實(shí)現(xiàn)在字符串 haystack 中查找第一次出現(xiàn)字符串 needle 的位置,如果未找到則返回 null。
現(xiàn)要求實(shí)現(xiàn)一個strstr的增強(qiáng)函數(shù),可以使用帶可選段的字符串來模糊查詢,與strstr一樣返回首次查找到的字符串位置。
可選段使用“[]"標(biāo)識,表示該位置是可選段中任意一個字符即可滿足匹配條件。比如"a[bc]"表示可以匹配"ab”或“ac”
注意目標(biāo)字符串中可選段可能出現(xiàn)多次
輸入描述
與strstr函數(shù)一樣,輸入?yún)?shù)是兩個字符串指針,分別是源字符串和目標(biāo)字符串
輸出描述
與strstr函數(shù)不同,返回的是源字符串中,匹配子字符串相對于源字符串地址的偏移 (從0開始算),如果沒有匹配返回-1。
補(bǔ)充說明: 源字符串中必定不包含"[]”,目標(biāo)字符串中”[]"必定成對出現(xiàn),且不會出現(xiàn)嵌套。
輸入的字符串長度在[1,100]之間。
示例1:
輸入:
abcd
b[cd]
輸出
1
說明
相當(dāng)于是在源字符串中查找bc或者bd,bc子字符串相對于abcd的偏移是1
Java 實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/131555130
Python實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/131555455
C++ 實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/131555489
JavaScript實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/131555420
C實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/129190260