算法 给定一个字符串“catanddog”和一个字符串集合Set dic = {“cat”, “ca”, “and”, “dog”},判断dic中是否可以取出一个子集,这个子集可以组成给定字符串。
例如:catanddog在dic中
catandrow则不在当中
catanddogandrow也不在当中
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class sp {
static Set<String> set = new HashSet();
static {
set.add("cat");
set.add("and");
set.add("dogs");
set.add("ca");
set.add("cas");
}
public static void main(String[] args) {
String str = "catanddogs";
System.out.println(contain(str));
}
public static boolean contain(String string){
if (set.contains(string)) {
return true;
}
for (String s : set) {
String[] split = string.split(s);
if (split.length == 1) {
continue;
}
boolean result = true;
for (String str: split) {
boolean contain = contain(str);
if (!contain) {
result = false;
break;
}
}
if (result) {
return result;
}
}
return false;
}
}