一个字符串中9和g模糊,如果同等对待,输出所有可能性
public class Solution {
public static String toFullBinaryString(int num,int size) {
char[] chs = new char[size];
for(int i = 0; i < size; i++) {
chs[size - 1 - i] = (char)(((num >> i) & 1) + '0');
}
return new String(chs);
}
public ArrayList<String> getPossibleList(String input){
input = input.replace("9", "g");
ArrayList<String> result = new ArrayList<String>();
ArrayList<Integer> flag = new ArrayList<Integer>();
int j = 0;
for(int i=0;i<input.length();i++){
if(input.charAt(i) == 'g'){
flag.add(i);
}
}
int count = flag.size();
for(int i=0;i<Math.pow(2, count);i++){
String binary = toFullBinaryString(i,count);
StringBuilder tmp = new StringBuilder(input);
for(int k=0;k<binary.length();k++){
if(binary.charAt(k) == '1'){
tmp.deleteCharAt(flag.get(k).intValue());
tmp.insert(flag.get(k).intValue(),"9");
}
else
continue;
}
result.add(tmp.toString());
}
return result;
}
public static void main(String[] args){
String input = "123g97g";
Solution sl = new Solution();
ArrayList<String> result = sl.getPossibleList(input);
for(String output : result){
System.out.println(output);
}
System.out.println("Total : " + result.size());
}
}