题目描述
有一组单词,请编写一个程序,在数组中找出由数组中字符串组成的最长的串A,即A是由其它单词组成的(可重复)最长的单词。
给定一个string数组str,同时给定数组的大小n。请返回最长单词的长度,保证题意所述的最长单词存在。
测试样例:
["a","b","c","ab","bc","abc"],6
返回:3
思路:初始一个最长的为他自己本身。然后暴力一个个匹配,如果含有其他的并且不是自己,就置over为true,表示本次有效。
import java.util.*;
public class LongestString {
public int getLongest(String[] str, int n) {
// write code here
int maxcount = 0;
if(n==0)return maxcount;
maxcount =str[0].length();
//String maxstring = str[0];
for(int i=0;i<n;i++){
boolean over = false;
String tempstring = str[i];
int tempcount = str[i].length();
for(int j=0;j<n;j++){
if(tempstring.contains(str[j])&&tempstring!=str[j]){over=true;}
}
if(over&&tempstring.length()>maxcount){
//maxstring = tempstring;
maxcount = tempcount;
}
}
return maxcount;
}
}
思路2:优化后
先按字符串长度排个序哦,然后从长度最长的开始判断是否是由其他的合成的。相比1不用走完。