【每日面试题】字符串通配符匹配问题
来源:互联网 发布:js中如何定义整型变量 编辑:程序博客网 时间:2024/05/20 11:27
题目:在一篇英文文章中查找指定的人名,人名使用二十六个英文字母(可以是大写或小写)、空格以及两个通配符组成(*、?),通配符“*”表示零个或多个任意字母,通配符“?”表示一个任意字母。
如:“J* Smi??” 可以匹配“John Smith” .
请用C语言实现如下函数:
void scan(const char* pszText, const char* pszName);
注:pszText为整个文章字符,pszName为要求匹配的英文名。
请完成些函数实现输出所有匹配的英文名,除了printf外,不能用第三方的库函数等。
代码:
#include "stdafx.h"
#include<stdio.h>
const char *p=NULL;
bool match(const char* ptext,const char* name) /* 字符串匹配函数,使用递归的调用方法*/
{
if(*name=='\0')
{
p=ptext;
return true;
}
if(*ptext=='\0')
{
if(*name=='*'&&*(name+1)=='\0')
{
p=ptext;
return true;
}
return false;
}
if(*name!='*'&&*name!='?')
{
if(*name==*ptext)
return match(ptext+1,name+1);
return false;
}
else
{
if(*name=='*')
return match(ptext+1,name)||match(ptext,name+1);
else
{
return match(ptext+1,name+1);
}
}
}
void scan(const char* ptext,const char* name)
{
while(*ptext!='\0')
{
if(*ptext==*name)
{
bool flag=match(ptext,name);
if(flag)
{
while(ptext!=p)
{
printf("%c",*ptext++);
}
printf("\n");
}
}
else
ptext++;
}
}
int main()
{
char ptext[100]={0};
char pname[100]={0};
gets(ptext);
gets(pname);
scan(ptext,pname);
return 0;
}
- 【每日面试题】字符串通配符匹配问题
- 字符串通配符匹配问题
- 面试题---->字符串匹配
- 带有通配符的两个字符串匹配问题
- 带通配符的字符串匹配问题
- 含通配符的字符串匹配问题
- 【每日面试题】判断字符串是否对称
- 【每日面试题】字符串的顺序变化
- #面试题# 括号匹配问题
- 字符串通配符匹配-2014华为机试题目
- 通配符匹配字符串
- 字符串通配符匹配*,?算法
- 通配符字符串匹配
- 字符串转换成整数,通配符的字符串匹配问题
- 字符串转换成整数&带通配符的字符串匹配问题
- 腾讯关于字符串匹配的面试题
- 面试题61:模糊字符串匹配
- [各种面试题] 字符串匹配查询
- vim 退出命令
- Android SharedPreferences
- linux 常用命令及技巧
- 一次典型的CakePHP请求
- oracle 日期格式问题
- 【每日面试题】字符串通配符匹配问题
- Linux socket 完整的读写函数
- 8. 了解各种不同意义的new 和 delete
- oracle 9i安装图解
- Linux Kernel Module init 实现分析
- JAVA学习笔记3
- Linux网络编程: 原始套接字
- 数据的封装性及其可以进行操作的限制问题
- Linux USB device 枚举过程分析