當年從山東一家國企逃到北京時,第一次的面試題中有一道程式設計題,題目的要求是:乙個字串由多個單詞組成,這些單詞由乙個或者連連續多個空格分隔開,請寫乙個程式統計輸入的字串有多少個單詞。
這個題目很簡單,可能有n種方法可以解決它。把它用來做例項,並非是要想說明dfa的功能強大,而是因為它是乙個說明dfa的好例子。這個dfa:
字母表:英文本母和空格。
狀態:起始狀態、單詞狀態、空格狀態和接受狀態。
轉換規則:
起始狀態下讀到非空格,進入單詞狀態。
單詞狀態下讀到空格,進入空格狀態。
空格狀態下讀到非空格,進入單詞狀態。
在起始狀態、單詞狀態和空格狀態下讀到』/0』,進入結束狀態。
每次進入單詞狀態,單詞數計數加1。
實現**如下:
//build: gcc -ddebug -g countwords.c -o cw.exe
#include
<
stdio
.h>
#include
#include
<
assert
.h>
intcountwords
(const
char
* pszstr
)estate
= stat_start
;int
nwordsnr
= 0;
const
char* p
= pszstr
;assert
(pszstr
!= null
);while(*p
!= '/0'
)else
break;}
case
stat_in_word
:break;}
case
stat_in_space
:break;}
default
:break;}
p++;
}return
nwordsnr;}
intmain
(int
argc
, char
* argv
)else
return
nret;}
試著解一道騰訊面試題
帖子問題 同學去面試的 1 設計乙個魔方 六面 的程式。2 有一千萬條簡訊,有重複,以文字檔案的形式儲存,一行一條,有重複。請用5分鐘時間,找出重複出現最多的前10條。3 收藏了1萬條url,現在給你一條url,如何找出相似的url。面試官不解釋何為相似 想了一中午,寫了一下午 真服了自己,這麼鑽牛...
一道面試題
一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...
一道面試題
前些時候在找工作,就在準備結束此次找工作歷程的時候,去了一家公司面試,去了之後技術經理直接帶到一台電腦旁,給了一張紙條,上面是這樣的題目 用c或c 來實現 1 建立一棵樹,該樹的深度是隨機的,每個節點的位元組點數是隨機的。2 給每個節點分配一段隨機大小的記憶體空間,給每個節點賦乙個隨機數。3 遍歷這...