建立乙個文字檔案,統計給定單詞在文字檔案**現的總次數及位置。
文字檔案中每個單詞不包含空格且不跨行,單詞由字串行構成且區分大小寫,統計給定單詞在文字檔案**現的總次數,檢索輸出的某個單詞出現在文字中的行號、在該行**現的位置。
設計資料量大的文字,進行子串的查詢處理,分析演算法執行的時間效率,對所有輸出的匹配位置結果進行驗證,以證明演算法設計和實現的正確性。
用樸素模式匹配演算法或kmp演算法實現字串定位;可正確讀取,儲存文字。
public static int index(string s,string t,int pos)
return -1;
}
#include#include#include#pragma warning(disable:4996)
#include//catch() 任意鍵繼續
#include#include#include#includeusing namespace std;
#define maxsize 1000
struct str ;
/** 樸素模式匹配(暴力匹配)
*/int ******(str s, str goal, int begin)
if (j == m) //若相等,則說明找到匹配的子串,返回匹配位置i
return i + 1; //否則從下乙個位置重新開始比較
} return -1;}
/** 查詢的單詞的最長相等前字尾
* next[i]=j,含義是:下標為i 的字元前的字串最長相等前字尾的長度為j。
*/int* getnext(str goal_s)
else k = next[k];
//next[k]的值代表的是下標為k的字元前面的字串最長相等前字尾的長度
//也表示該處字元不匹配時應該回溯到的字元的下標
//這個值給k後又進行while迴圈判斷,此時t.data[k]即指最長相等字首後乙個字元
} return next;
}
文字檔案單詞的檢索與計數
建立乙個文字檔案,統計給定單詞在文字檔案 現的總次數及位置 就是遍歷主串,然後把待匹配字串與子串進行比對,先把待匹配子串的第乙個字母與主串進行匹配,若匹配成功,則兩串的座標依次 匹配不成功時,主串座標返回到開始匹配時的座標,待匹配串座標清零,若待匹配座標等於待匹配子串長度,則證明匹配成功,返回匹配完...
文字檔案單詞的檢索與計數預習
實驗任務 建立乙個文字檔案,統計給定單詞在文字檔案 現的總次數及位置 實現要求 文字檔案中每個單詞不包含空格且不跨行,單詞由字串行構成且區分大小寫,統計給定單詞在文字檔案 現的總次數,檢索輸出的某個單詞出現在文字中的行號 在該行 現的位置。設計資料量大的文字,進行子串的查詢處理,分析演算法執行的時間...
文字檔案單詞的檢索及計數
要求程式設計建立乙個文字檔案,每個單詞不包括空格及跨行,單詞由字串行構成且區分大小寫,完成以下功能 統計給定單詞在文字檔案 現的總次數 檢索輸出某單詞在文字檔案中首次出現的行號及位置。如下 include include include void creatfile file fp void sea...