OpenJudge 帶萬用字元的字串匹配
6252:帶萬用字元的字串匹配
描述
萬用字元是一類鍵盤字元,當我們不知道真正字元或者不想鍵入完整名字時,常常使用萬用字元代替一個或多個真正字元。萬用字元有問號(?)和星號(*)等,其中,“?”可以代替一個字元,而“*”可以代替零個或多個字元。
你的任務是,給出一個帶有萬用字元的字串和一個不帶萬用字元的字串,判斷他們是否能夠匹配。
例如,1?456 可以匹配 12456、13456、1a456,但是卻不能夠匹配23456、1aa456;
2*77?8可以匹配 24457798、237708、27798。
輸入
輸入有兩行,每行為一個不超過20個字元的字串,第一行帶萬用字元,第二行不帶萬用字元
輸出
如果兩者可以匹配,就輸出“matched”,否則輸出“not matched”
樣例輸入
1*456?
11111114567
樣例輸出
matched
模擬字串匹配的過程,注意下面幾個測試樣例
123*45*6
1237894523454336
*?
123456
2*77?8
24457798
以下就是滿分的AC程式碼:
#include <stdio.h>
#include <string.h>
char str1[21];
char str2[21];
char temp[21];
char* mystrstr(char* s1,char* s2)
{
int i,j;
int len1=strlen(s1);
int len2=strlen(s2);
for(i=0;i<len1;i++)
{
for(j=0;j<len2&&i<len1;)
{
if(s1[i]==s2[j])
{
i++;
j++;
}
else if(s2[j]=='?')
{
i++;
j++;
}
else break;
}
if(j==len2)
{
return (s1+i-len2);
}
}
return NULL;
}
int main()
{
scanf("%s %s",str1,str2);
int len1=strlen(str1);
int len2=strlen(str2);
int i=0;
int j=0;
int flag=1;
while(i<len1&&j<len2)
{
if(str1[i]=='*')
{
int cnt=0;
int p1=(++i);
if(i==len1)
{
j=len2;
}
else
{
int p2=0;
while(str1[p1]!='*'&&str1[p1]!='\0')
{
temp[p2++]=str1[p1++];
}
temp[p2]='\0';
char* p3=str2+j;
while(mystrstr(p3,temp))
{
p3=mystrstr(p3,temp);
p3+=strlen(temp);
}
j=(p3-str2);
i+=strlen(temp);
}
}
else if(str1[i]=='?')
{
i++;
j++;
}
else{
if(str1[i]==str2[j])
{
i++;
j++;
}
else
{
flag=0;
break;
}
}
}
while(i<len1)
{
if(str1[i]=='*') i++;
else
{
flag=0;
break;
}
}
if(i==len1&&j==len2&&flag) printf("matched\n");
else printf("not matched\n");
return 0;
}
相關文章
- Python3 - 用Shell萬用字元匹配字串Python字元字串
- 正則匹配指定字元之前的字串字元字串
- LeetCode 44 萬用字元匹配LeetCode字元
- LeetCode刷題記126-44. 萬用字元匹配LeetCode字元
- 字串匹配字串匹配
- mysql 查詢,字串帶著空格也能匹配上MySql字串
- 【字串匹配】KMP字串匹配KMP
- 字串和字元的操作字串字元
- Excel 2010 SQL應用032 字元範圍的模糊匹配查詢ExcelSQL字元
- BZOJ4259: 殘缺的字串(FFT 字串匹配)FFT字串匹配
- 字串-字元編碼字串字元
- 字串匹配模式問題字串匹配模式
- Bitset 亂搞字串匹配字串匹配
- PHP獲取字串中的某個字元:採用陣列的方式PHP字串字元陣列
- 字串-刪除指定字元字串字元
- 字串-字元統計2字串字元
- 字串-字元統計1字串字元
- 字元陣列與字串字元陣列字串
- 輸入字串,判斷是否為迴文字串,即前後對稱的(單個字元,不帶空格)字串字元
- Go 語言之父帶你重新認識字串、位元組、rune 和字元Go字串字元
- JavaScript刪除字串中的指定字元JavaScript字串字元
- python如何刪除字串的特殊字元Python字串字元
- 字串——正規表示式匹配字串
- KMP字串模式匹配詳解KMP字串模式
- 【學習筆記】字串匹配筆記字串匹配
- 匹配空白字元正規表示式字元
- php正則匹配所有違規字元PHP字元
- Ubuntu萬用字元的使用Ubuntu字元
- 統計字串字元個數字串字元
- 最長不含重複字元的子字串字元字串
- DI String Match 增減字串匹配字串匹配
- KMP字串匹配演算法KMP字串匹配演算法
- 字串匹配演算法:KMP字串匹配演算法KMP
- [JS高程] 字串模式匹配方法JS字串模式
- 字串匹配演算法(一)字串匹配演算法
- KMP字串匹配學習筆記KMP字串匹配筆記
- 正規表示式匹配雙位元組字元字元
- 【python技巧】文字處理-re庫字元匹配Python字元