問題是這樣的:有乙個文字檔案,裡面存放的都是以逗號分隔的單詞,
比如: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...