今天参加了腾讯的现场招聘会,碰到这个一个题目:
  在一篇英文文章中查找指定的人名,人名使用二十六个英文字母(可以是大写或小写)、空格以及两个通配符组成(*、?),通配符“*”表示零个或多个任意字母,通配符“?”表示一个任意字母。
如:“J* Smi??” 可以匹配“John Smith” .
请用C语言实现如下函数:
void scan(const char* pszText, const char* pszName);
注:pszText为整个文章字符,pszName为要求匹配的英文名。请完成些函数实现输出所有匹配的英文名,除了printf外,不能用第三方的库函数等。
当时现场在纸上写了下,也不知道写得对不,感觉没有个好的思路。现请论坛里的大虾们帮忙提供一下好思路方法,若有代码最好,谢谢!

解决方案 »

  1.   

    呵呵,沙发!用正则表达式处理比较简单噶
      

  2.   

    只会循环字符串,逐个查找满足表达式的字符
      

  3.   

    相当于自己实现通配符,有星号的地方就比较其边界,问号除了边界还要注意数量。星号问号相连的话,就相当于是至少有同问号数量个字母的星号。
      

  4.   

    名字都第一字母大写先把像名字的抽出来,然后比对
      

  5.   


    不错的思路~~暂时还没有更好的想法~~