- 有一组单词,请编写一个程序,在数组中找出由数组中字符串组成的最长的串A,即A是由其它单词组成的(可重复)最长的单词。
- 给定一个string数组str,同时给定数组的大小n。请返回最长单词的长度,保证题意所述的最长单词存在。
- 测试样例:[“a”,”b”,”c”,”ab”,”bc”,”abc”],6,返回:3,因为abc可以由其他的字符串组成,
class LongestString {
public:
static bool cmp(string a, string b)
{
return a.length() > b.length();
}
int getLongest(vector<string> str, int n) {
sort(str.begin(), str.end(), cmp);
int max = 0;
for(int i = 0; i <= n; i++)
{
if(Other(str, str[i], i, n))
return str[i].length();
}
return -1;
}
bool Other(vector<string> str, string s, int index, int n)
{
if(s.length() == 0)
return true;
for(int i = 0; i < n; i++)
{
if(i != index)
{
if(s.find(str[i]) == 0)
{
if(Other(str, s.substr(str[i].length()), index, n))
return true;
}
}
}
return false;
}
};