-1

データセットで頻繁に使用されるアイテムの数を見つけようとしています。最初に、入力文字列のサブセットを見つけようとしました

Input:
coke,cracker,beer
coke,cracker

私がこれまでに行ったことは、

String[] transaction = value.toString().split(delim);
/*
 * Get subsets
 */
System.out.println("Transaction----"+Arrays.toString(transaction));
Arrays.sort(transaction);
int len = transaction.length;
long numofSubsets = (long) Math.pow(2, transaction.length);

for (long i = 1; i < numofSubsets; i++) {

    String j = String.format("%" + len + "s", Long.toBinaryString(i)).replace(' ', '0');
    String addVal = "";
    for (int l = 0; l < j.length(); l++) {
            if (j.charAt(l) == '0') {
             //do nothing
             } 
             else{
            addVal += transaction[l]+delim;
             System.out.println("addval---------- "+addVal);
             addVal = addVal.substring(0, addVal.length()-1);
              }
    }
}

そして、出力は

Transaction----[coke, cracker, beer]
addval---------- cracker
addval---------- coke
addval---------- coke
addval---------- coke,cracker
addval---------- beer
addval---------- beer
addval---------- beer,cracker
addval---------- beer
addval---------- beer,coke
addval---------- beer
addval---------- beer,coke
addval---------- beer,coke,cracker
Transaction----[coke, cracker]
addval---------- cracker
addval---------- coke
addval---------- coke
addval---------- coke,cracker

サブセットは次のようになると思います

 coke
    cracker
    beer
    coke,cracker
    coke,beer
    cracker,beer
    coke
    cracker
    coke,cracker


Transaction----[coke, cracker]
    addval---------- cracker
    addval---------- coke
    addval---------- coke
    addval---------- coke,cracker

ここcokeで取得してrepeatedいます。

私は何か間違ったことをしていますか?

ご意見をお聞かせください。

4

1 に答える 1

0

ここでの問題は、printlnステートメントの配置です。印刷する文字列を生成しているループ内にあるため、必要な文字列を印刷する前に、文字列のすべてのプレフィックスを印刷します。たとえば、「コーラ、クラッカー、ビール」が必要な場合は、

coke coke, crackers coke, crackers, beer

これを修正するprintlnには、ループの外側に移動します。

于 2014-07-09T19:01:03.830 に答える