(我不知道该怎么称呼它,如果它模糊或不准确,请道歉。我环顾'网络寻找答案,但我不知道该搜索什么问题,因此,我来了此处。)
我需要一个方法来获取字符串并从中获取字符并将其放入模式中。
所以,让我们说String s = "abcd".
这个方法需要采用它并打印"abcd," "bcd," "abc," "cd," "bc," "ab," "d," "c," "b," "a".
我完全不知道如何使这个工作,所以任何事情都会有用。
以下是一种类似于我想要实现的方法。
void printSub3(String s){
for(int i = 0; i < s.length(); i++){
for(int j = 0; j < s.length()-i; j++){
System.out.printf(s.substring(s.length()-j-i-1, s.length()-j)+", ");
}
}
}
答案 0 :(得分:1)
您可以通过从1到2 n -1(包括1和2)计数来构建所有子集的列表,并使用数字作为位模式来决定要采用的字符串的哪些元素(1 )和哪些要跳过(零):
String str = "abcd";
for (int mask = 1 ; mask != 1<<str.length() ; mask++) {
StringBuilder bld = new StringBuilder();
for (int i = 0 ; i != str.length() ; i++) {
if ((mask & 1<<i) != 0) {
bld.append(str.charAt(i));
}
}
System.out.println(bld);
}
答案 1 :(得分:0)
我建议您自己尝试使用提示:
使用n位作为每个字符在结果字符串中可能存在的标志,其中n
是输入字符串中的char数。切换标志以覆盖范围[0-(2 ^ n-1)]中的所有值,并生成与这些位模式对应的字符串。
学习按位移位操作和位模式/屏蔽的好问题。所以尝试自己编码。