最長組合單詞

2021-06-22 14:43:08 字數 785 閱讀 6225

問題是這樣的:有乙個文字檔案,裡面存放的都是以逗號分隔的單詞,

比如:test,tester,testing,works,testworks。。。。。。給出這個文字裡乙個最長的復合單詞,

這個復合單詞由文字裡其他單詞組合而成的,如:testworks由test和works組合而成。

這個問題我想了一天,除了當天面試時想到的用字典樹的方法外,後又想到了一種方法,這個方法是:

1、首先對所有單詞按照長度排序(從小到大);

2、定義乙個陣列存放非組合單詞,稱它為子單詞陣列,把第乙個單詞(也是最短的)放進去,然後依次判斷後面的是不是這個陣列裡面的元素組成的;

3、如果是組合詞,就不放進這個子單詞陣列;

偽**如下:

char **subword;  //這是子單詞陣列,也就是存放非組合單詞的字元陣列。

int    num=0;         //用來統計子單詞的個數

char *  searchmaxcombword(char **str)/* 函式功能:查詢最長組合單詞

int   iscombword(char * src)                          /* 函式功能:判斷單詞src是否是組合單詞              

}return 0;

}int  strprefixmatch(char * src,char * sub)                 /* 函式功能:對單詞進行字首匹配

總的來說,這個演算法效率也不是挺高,但我目前能想到的方法就是這個了。。。

最長單詞2

描述 乙個以 結尾的簡單英文句子,單詞之間用空格分隔,沒有縮寫形式和其它特殊形式。輸入 乙個以 結尾的簡單英文句子 長度不超過 500 單詞之間用空格分隔,沒有縮寫形式和其它特殊形式。輸出 該句子中最長的單詞。如果多於乙個,則輸出第乙個。輸入示例 i am astudent of peking un...

最長的單詞

description 求一行句子中最長的單詞,如果出現並列情況,輸出字典序最小的單詞,例如如果above和alive同時為最長單詞,則輸出above input 行1 一行空格分隔的字母,此行最少1個字元 且非空格 最多1000個字元,單詞最長16個字元 output 行1 最長的單詞 思路 讀入...

找出最長單詞

fcc裡的一道小演算法題 在句子中找出最長的單詞,並返回它的長度。函式的返回值應該是乙個數字。split 分解句子單詞,然後計算長度再比較就可以了。最開始是這樣寫的 function findlongestword str strarr.sort sortnum return strarr stra...