Apriori算法求集合的非空子集java代码
public class Test { public static void main(String[] args) { String str="abcd" ; //用Set集合保存结保证内容重复 Set<String> set = new HashSet<String>(); //外层循环控制指针移动位置 从 a 依次移动顺序 a b c a c for(int i=0 ; i<str.length() ; i++){ //从指针所位置开始内层遍历 for(int k= i ; k<str.length() ; k++){ //从指针位置处开始截取字符串直截 字符串结尾 String res = str.substring(i , k+1); //当前字符串和原始字符串相同放入集合该种情况子串 if(res ==str) continue ; set.add(res); } } //遍历结 for(String s : set){ System.out.println(s); } } }
public class Test { /** * 打印一个数组所有的非空子集 */ public List<String> printAllSubsets(String[] array) { if (null == array || 0 == array.length) { throw new IllegalArgumentException("数组不能为Null,至少有一个元素"); } int len = array.length; List<String> stringList = new LinkedList<String>(); int allMasks = 1 << len; // 遍历所有的二进制表示方式 for (int i = 1; i < allMasks; i++) { if (i == allMasks - 1) break; StringBuilder s = new StringBuilder(); for (int j = 0; j < len; j++) if ((i & (1 << j)) > 0) { s.append(array[j]); } stringList.add(s.toString()); } return stringList; } public static void main(String[] args) { Test exam = new Test(); List<String> stringList = exam.printAllSubsets(new String[]{"aa", "bb", "ce", "dh"}); for (String s : stringList) { System.out.println(s); } } }