/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class PrintPowerSet {
private static String getSubset
(String inputSet,
int mask
) { if (mask == 0) {
return "Ø";
}
for (int i = 0; i < inputSet.length(); i++) {
// Check if ith bit is set
if ((mask & (1 << i)) != 0) {
subset.append(inputSet.charAt(i));
}
}
return subset.toString();
}
public static List
<String
> permuteSet
(String inputSet
) { List<String> powerSet = new ArrayList<String>();
int n = inputSet.length(); // size for binary
int powerSetLength = 1 << n; // you should check that n is small enough
for (int i = 0; i < powerSetLength; i++) {
powerSet.add(getSubset(inputSet, i));
}
return powerSet;
}
public static void main
(String args
[]) { List<String> result = permuteSet(set);
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgUHJpbnRQb3dlclNldCB7Cglwcml2YXRlIHN0YXRpYyBTdHJpbmcgZ2V0U3Vic2V0KFN0cmluZyBpbnB1dFNldCwgaW50IG1hc2spIHsKCQlpZiAobWFzayA9PSAwKSB7CgkJCXJldHVybiAiw5giOwoJCX0KCQkKCSAgICBTdHJpbmdCdWZmZXIgc3Vic2V0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOwoJCgkgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnB1dFNldC5sZW5ndGgoKTsgaSsrKSB7CgkgICAgICAgIC8vIENoZWNrIGlmIGl0aCBiaXQgaXMgc2V0CgkgICAgICAgIGlmICgobWFzayAmICgxIDw8IGkpKSAhPSAwKSB7CgkgICAgICAgICAgICBzdWJzZXQuYXBwZW5kKGlucHV0U2V0LmNoYXJBdChpKSk7CgkgICAgICAgIH0KCSAgICB9CgkKCSAgICByZXR1cm4gc3Vic2V0LnRvU3RyaW5nKCk7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgTGlzdDxTdHJpbmc+IHBlcm11dGVTZXQoU3RyaW5nIGlucHV0U2V0KSB7CgkgICAgTGlzdDxTdHJpbmc+IHBvd2VyU2V0ID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CgkgICAgaW50IG4gPSBpbnB1dFNldC5sZW5ndGgoKTsgLy8gc2l6ZSBmb3IgYmluYXJ5CgkgICAgaW50IHBvd2VyU2V0TGVuZ3RoID0gMSA8PCBuOyAvLyB5b3Ugc2hvdWxkIGNoZWNrIHRoYXQgbiBpcyBzbWFsbCBlbm91Z2gKCQoJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcG93ZXJTZXRMZW5ndGg7IGkrKykgewoJICAgICAgICBwb3dlclNldC5hZGQoZ2V0U3Vic2V0KGlucHV0U2V0LCBpKSk7CgkgICAgfQoJCgkgICAgcmV0dXJuIHBvd2VyU2V0OwoJfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB7CgkgICAgU3RyaW5nIHNldCA9ICJnbGUiOwoJICAgIExpc3Q8U3RyaW5nPiByZXN1bHQgPSBwZXJtdXRlU2V0KHNldCk7CgkgICAgZm9yIChTdHJpbmcgd29yZCA6IHJlc3VsdCkgewoJICAgICAgICBTeXN0ZW0ub3V0LnByaW50KHdvcmQgKyAiICIpOwoJICAgIH0KCX0KfQ==