pascal 通配符 匹配

来源:百度知道 编辑:UC知道 时间:2024/06/16 11:53:59
3.给一个带通配符*和?的字符串S,问它能不能匹配字符串T。(通配符?可替代单个字符,通配符 * 可替代任意字符)
例如输入“computer*”,就可以找到“computer、computers、computerised、computerized”等单词,而输入“comp?ter”,则只能找到“computer、compater、competer”等单词。
例如,a*b?能够匹配aabc,但是不能匹配aab
给出动态规划程序代码
需要pascal程序代码
能给出来吗

只有C++的,学pascal的应该能读懂C++的程序,大体差不多啊。
#include<iostream.h>
#include<string.h>
int index(char *s,char *t,int pos)
{
int i=pos,j=0,lens=strlen(s),lent=strlen(t);
while(i<lens&&j<lent)
{
if(s[i]==t[j]||t[j]=='?')
{
++i;
++j;
}
else
{
i=i-j+1;
j=0;
}
}
if(j==lent)return i-lent;
else return -1;
}
bool match(char *s,char *t)
{
int i=0,j=0,lens=strlen(s),lent=strlen(t);
char buf[128];
int bufp=0;
while(j<lent&&t[j]!='*')
{
buf[bufp]=t[j];
++bufp;++j;
}
buf[bufp]='\0';
if(index(s,buf,0)!=0)return false;
i=bufp;
while(1)
{
while(j<lent&&t[j]=='*')++j;
if(j=