输入字符串,将字符串里的*用0或1替换,输出所有可能的字符串。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.print("請輸入字符串(如:abc*e*f):");
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
char a[] = str.toCharArray();
int count = 0;
for (int i = 0; i < a.length; i++) {
if (a[i] == '*') {
count++;
}
}
int n = 1 << count;//1<<n为2的n次方
int countNum = 0; //统计替换次数
for (int i = 0; i < n; i++) {
countNum++;
char[] c = new char[count];
c = Integer.toBinaryString(i).toCharArray();
int m = c.length-1;
//从后向前遍历
for (int k = a.length - 1; k >= 0; k--) {
if (m < 0) {
if ('*' == a[k]) {
a[k] = '0';
}
} else {
if ('*' == a[k]) {
if (m >= 0) {
a[k] = c[m--];
} else {
a[k] = '0';
}
}
}
}
for (int j = 0; j < a.length; j++) {
System.out.print(a[j]);
}
System.out.println();
a = str.toCharArray();
}
System.out.println(countNum);
}
}