在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)分析&挖掘/ 單詞統(tǒng)計(jì)
hash表
單詞統(tǒng)計(jì)
鏈表排序
查找
可變參數(shù)
爬樓梯
內(nèi)存
prim算法 中
線性結(jié)構(gòu)的處理
數(shù)據(jù)選擇
prim算法 上
循環(huán)單向鏈表
基數(shù)排序
堆排序
鏈表重合
排序二叉樹的保存和加載
圖添加和刪除
排序二叉樹線索化
非遞歸排序
字符串查找 下篇
鏈表逆轉(zhuǎn)
函數(shù)堆棧顯示
遞歸和堆棧
二叉樹深度遍歷
線性隊(duì)列
循環(huán)和遞歸
快速排序
尋找丟失的數(shù)
A*算法
克魯斯卡爾算法 下
排序二叉樹
大數(shù)計(jì)算
二叉樹廣度遍歷
prim算法 下
洗牌算法
圖結(jié)構(gòu)
最大公約數(shù)、最小公倍數(shù)
圖創(chuàng)建
雙向鏈表
字符串查找 上篇
尋路
通用算法的編寫
哈夫曼樹 下
線性堆棧
八皇后
排序二叉樹刪除-1
挑選最大的n個(gè)數(shù)
字符串查找 中篇
哈夫曼樹 上
合并排序
回?cái)?shù)
選擇排序
哈希二叉樹
通用數(shù)據(jù)結(jié)構(gòu)
“數(shù)星星”
單向鏈表
排序二叉樹插入
圖的保存
排序二叉樹刪除-2
排序二叉樹刪除-3
n!中末尾零的個(gè)數(shù)統(tǒng)計(jì)

單詞統(tǒng)計(jì)

在面試環(huán)節(jié)中,有一道題目也是考官們中意的一道題目:如果統(tǒng)計(jì)一段由字符和和空格組成的字符串中有多少個(gè)單詞?

其實(shí),之所以問這個(gè)題目,考官的目的就是想了解一下你對(duì)狀態(tài)機(jī)了解多少。

(1) 題目分析

從題目上看,如果對(duì)一個(gè)字符串進(jìn)行處理,那么可以有下面幾種情形:初始狀態(tài),字符狀態(tài),空格狀態(tài),結(jié)束狀態(tài)。那么這幾種狀態(tài)之間應(yīng)該怎么遷移呢?

初始狀態(tài): 如果輸入符號(hào)是空格,那么進(jìn)入空格狀態(tài);如果是字符,那么就進(jìn)入字符狀態(tài),同時(shí)單詞個(gè)數(shù)+1;如果是結(jié)束狀態(tài),那么直接返回;

字符狀態(tài):如果輸入符號(hào)是空格,那么進(jìn)入空格狀態(tài);如果是字符,那么什么也不做;如果是結(jié)束,直接返回;

空格狀態(tài):如果輸入符號(hào)是空格,那么什么也不做;如果是字符,那么進(jìn)入字符狀態(tài),同時(shí)單詞個(gè)數(shù)+1;如果結(jié)束狀態(tài),那么直接返回。

/*          輸入是字符
*           -------->    字符狀態(tài) ----------
*          |                               | -->
*      初始狀態(tài)  輸入字符  |  |  輸入空格            結(jié)束狀態(tài)
*          |                                 -->
*          --------->    空格狀態(tài) ----------|
*            輸入是空格
*/

(2)根據(jù)上面描述的狀態(tài)遷移過程,編寫對(duì)應(yīng)的代碼

typedef enum{
    INIT_STATE = 1,
    WORD_STATE,
    SPACE_STATE,
};

int count_word_number(const char* pStr)
{
    int count = 0;
    int state = INIT_STATE;
    char value ;

    if(NULL == pStr)
        return 0;

    while(value = *pStr++){
        switch (state)
        {
        case INIT_STATE:
            if(' ' != value)
                count ++, state = WORD_STATE;
            else
                state = SPACE_STATE;
            break;

        case WORD_STATE:
            if(' ' == value)
                state = SPACE_STATE;
            else if('
上一篇:線性堆棧下一篇:hash表