文字查詢
該程式將讀取使用者指定的任意文字檔案,然後允許使用者從該檔案中查詢單詞。查詢的結果是該單詞出現的次數,並列出每次出現所在的行,如果某單詞在同一行中多次出現,程式將只顯示該行一次。行號按公升序顯示。
要求:a. 它必須允許使用者指明要處理的檔案名字。
b. 程式將儲存該檔案的內容,以便輸出每個單詞所在的原始行。
vectorlines;//o(1) 完美hash
或 maplines;//o(logn)
或 unorderedmaplines;//o(1)
c. 它必須將每一行分解為各個單詞,並記錄每個單詞所在的所有行。 在輸出行號時,應保證以公升序輸出,並且不重複。
map> word2line;
mapdict;
d. 對特定單詞的查詢將返回出現該單詞的所有行的行號。
e. 輸出某單詞所在的行文字時,程式必須能根據給定的行號從輸入 檔案中獲取相應的行。
///
/// @file textquery.cc
/// @author guoleida([email protected])
/// @date 2017-08-02 17:30:56
///#include #include #include #include #include #include #include using std::cout;
using std::endl;
using std::cin;
using std::string;
using std::ifstream;
using std::vector;
using std::map;
using std::set;
using std::istringstream;
class textquery
;void textquery::readfile(const string &filename) }}
void textquery::query(const string & word)
return 0;
}
執行結果如下:
C 單詞查詢程式(自己錄入文字)
我是程式設計新手,第一次寫。注釋很詳細,都是自己的理解,錯了也合理。呵呵 include include include include include include using namespace std 類定義 class textquery setrun query const string...
單詞查詢樹
兩種方法 給出一些列號碼,若果任乙個號碼不在另乙個中充當字首,那麼這系列號碼是合理的輸出yes,否則輸出no 思路 標頭檔案中find函式的使用,按長度從小到大排列,那麼能當另乙個號碼字首的只能是前乙個當後乙個的字首,所以乙個乙個找 時間複雜度 o n include include include...
單詞查詢樹
一 概念 從上面的圖中,我們或多或少的可以發現一些好玩的特性。第一 根節點不包含字元,除根節點外的每乙個子節點都包含乙個字元。第二 從根節點到某一節點,路徑上經過的字元連線起來,就是該節點對應的字串。第三 每個單詞的公共字首作為乙個字元節點儲存。二 使用範圍 既然學trie樹,我們肯定要知道這玩意是...