1. 程式人生 > >【每日面試題】字串萬用字元匹配問題

【每日面試題】字串萬用字元匹配問題

題目:在一篇英文文章中查詢指定的人名,人名使用二十六個英文字母(可以是大寫或小寫)、空格以及兩個萬用字元組成(*、?),萬用字元“*”表示零個或多個任意字母,萬用字元“?”表示一個任意字母。
如:“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;
}

相關推薦

每日試題字串字元匹配問題

題目:在一篇英文文章中查詢指定的人名,人名使用二十六個英文字母(可以是大寫或小寫)、空格以及兩個萬用字元組成(*、?),萬用字元“*”表示零個或多個任意字母,萬用字元“?”表示一個任意字母。 如:“J* Smi??” 可以匹配“John Smith” . 請用C語言實現如下

每日試題給定一個字串,求出其最長的重複子串

題目:給定一個字串,求出其最長的重複子串 如字串abcdabcabcd,求的最長重複子串為abcd 程式碼: void LongChar(char* str) {  if(str==NULL)   return;  int max=0;  int first=0;  int

華為機試071字串字元

題目描述: 在計算機中,萬用字元一種特殊語法,廣泛應用於檔案搜尋、資料庫、正則表示式等領域。現要求各位實現字串萬用字元的演算法。 要求: 實現如下2個萬用字元: *:匹配0個或以上的字元(字元由英文字母和數字0-9組成,不區分大小寫。下同) ?:匹配1個字元 輸入: 萬用字元表示式;

leetCode44_字元匹配

dp: class Solution { public: bool isMatch(string s, string p) { //tag 用於dp,tag[i][j]代表s的子串s[0,i-1] 可以匹配 p的子串p[0,j-1]。

LeetCode44. 字元匹配

題目描述 思路(與10. 正則表示式匹配類似) dp[ i ][ j ] 表示 s 的前 i 個字元與 p 的前 j 個字元的匹配結果。 先寫邊界情況,再寫 dp 方程,若 p[ j - 1] 為 * ,dp[ i ][ j ] = dp[ i - 1][ j

華為code中的字串字元匹配

#define FALSE 0 #define TRUE 1 #define M 300 #include<stdio.h> #include<string.h> int equal(char *s, char *p) { char tem

react試題不可錯過的react 試題

下面是一個常用的關於 React 的面試問題列表: 無論作為一個面試者,或者招聘官,下面這些問題都可以去參考 React 的工作原理 React 會建立一個虛擬 DOM(virtual DOM)。當一個元件中的狀態改變時,React 首先會通過 "diffing" 演算法來

vuejs試題務必熟知的vuejs試題

  vuejs 基礎必備 1、active-class 是哪個元件的屬性?巢狀路由怎麼定義   (1)、active-class 是 vue-router 模組的 router-link 元件的屬性   (2)、使用 children 定義巢狀路由 2、怎麼定義 vu

vuejs試題務必熟知的vuejs試題「務必收藏」

com 模式 問題 get vpd 插入圖片 文件中 出發 的確 如果能幫到你,點個贊吧,務必熟知的vuejs面試題「務必收藏」 vuejs 基礎必備 1、active-class 是哪個組件的屬性?嵌套路由怎麽定義   (1)、active-class 是 vue-rou

Java試題之類載入:從試題分析Java類載入機制

 “載入”(Loading)階段是“類載入”(Class Loading)過程的第一個階段,在此階段,虛擬機器需要完成以下三件事情:        1、 通過一個類的全限定名來獲取定義此類的二進位制位元組流。        2、 將這個位元組流所代表的靜態儲存結構轉化為方法區的執行時資料結

Java試題spring+springMVC+mybatis原理及實現機制(持續更新)

本文將持續更新,主要講解SSM框架的底層原理和實現機制等 1.什麼是IOC? IOC即Inverse of Control,它包括兩個內容:控制與反轉 那到底什麼東西的“控制”被“反轉”了呢?對於軟體而言,即是某一個介面具體實現類的選擇控制權從呼叫類中移除,轉交給第三

java試題Static Nested Class(巢狀類) 和 Inner Class(內部類)的不同 、final、static

前言: 本來是想總結一下inner class 的用法,但是卻發現這幾位頗為親近。索性一起拉出來溜溜。 寫作目的: 跟 static , final, inner class 搞好關係,以便將來遇見了,就像用if ,else一樣,一清二楚。 文中的術語定義以java language spec為準。 先想想

Java試題11 什麼是內部類?Static Nested Class 和 Inner Class的不同。

Inner Class(內部類)定義在類中的類。 (一般是JAVA的說法) Nested Class(巢狀類)是靜態(static)內部類。(一般是C++的說法) 靜態內部類:1 建立一個static內部類的物件,不需要一個外部類物件2 不能從一個static內部類的一

Anonymous Inner Class(匿名內部類)是否可以繼承其它類?是否可以實現介面?Java試題

回答:匿名內部類在實現時必須藉助一個藉口或者一個抽象類或者一個普通類來構造,從這過層次上講匿名內部類是實現了介面或者繼承了類,但是不能通過extends或implement關鍵詞來繼承類或實現介面。

一道試題一個".java"原始檔中是否可以包括多個類(不是內部類)?有什麼限制?

這個面試題的答案在網上一搜一大把 但都是兩句話就結束了,我們來仔細看一下具體是什麼情況! 首先 肯定的一點是一個.java的原始檔中是可以包含多個類的,但是public類只能有一個,並且類名要和檔名相同,如果有兩個public類 就會報出以下的錯誤 這

Java試題之分頁功能的實現

以下內容是根據網上內容以及傳智播客教學整理而來,侵刪。 分頁的實現可分為兩大類:一、資料在Java程式碼中進行分頁,然後取得當前頁資料;二、在資料庫中直接取得當前頁資料。通常面試官都希望聽到後者,因為那才是高效的方法。你如果想讓面試官覺得你的能力高的話你就先否定他的問

抽象類(abstract class)和介面(interface)有什麼異同?Java試題

1、抽象類可以包含非抽象的方法,而介面中的方法必須是抽象的。 2、繼承抽象類在Java語言體系中體現一種繼承關係,在合理的繼承關係中,父類和派生類比如按存在is-a關係。而實現介面則體現一種has-a

奇葩試題因為太難而被禁用的17道Google試題

即使是最成功的公司,它的招聘過程有時也會很不靠譜,經常會出一些奇怪的看似沒有答案的面試問題,但標準答案卻讓應聘者還沒來得及接近「起跑線」就被「退賽」了。Google 曾經就是這樣的公司,招聘人員會出一些難為應聘者的高質量問題。事實上,有些問題實在是太古怪了,最終被完全禁用。2

Java試題如何回答GC相關問題

一個面試官對面試問題的分析 這個帖子的背景是今晚看到je上這張貼:大家都來說說自己最討厭的面試題目吧。,心血來潮寫下的文字,如果能拋磚引玉,能有其他面試官分析一下自己面試時問的問題,那或許是件很有意義的事情。 在公司當技術面試官幾年間,從應屆生到工作十幾年的應聘者都遇到過。先表達一下我自己對面試的觀點:

Java試題一次完整的Http請求過程(非常詳細)

④ 如果在hosts檔案中也沒有找到對應的條目,瀏覽器就會發起一個DNS的系統呼叫,就會向本地配置的首選DNS伺服器(本地DNS伺服器,一般是電信運營商提供的,也可以使用像Google提供的DNS伺服器)發起域名解析請求(遞迴,通過的是UDP協議向DNS的53埠發起請求,這個請求是遞迴的請求,也就是運營商的D