給一串很長字符串,要求找到符合要求的字符串,例如目的串:123
1******3***2 ,12*****3 這些都要找出來
思路:簡便起見,不考慮漢字問題,將字母或者數字等轉換成ascii碼值存放於位圖中,提高效率(至於位圖與哈希表的效率,本人沒做比較)
/**
* @author PLA
* “和諧”探索
*/
public static void main(String[] args) {
String s1 = "afc32b,hcdr,thdf";
String goal = "a23bc";
search(s1, goal);
}
private static void search(String s1, String s2) {
// TODO Auto-generated method stub
char[] goal = s2.toCharArray();
String s3[] = s1.split(",");
for(int count=0;count<s3.length;count++){
char[] s = s3[count].toCharArray();
boolean flag = true;
BitSet bitSet = new BitSet(256);// 用ascii碼
for (int i = 0; i < s.length; i++) {
bitSet.set(s[i] - ' ', true);
}
for (int j = 0; j < goal.length; j++) {
if (!bitSet.get(goal[j] - ' ')) {
flag = false;
}
}
if (flag) {
System.out.println("match: "+s3[count]);
} else {
System.out.println("dismatch: "+s3[count]);
}
}
}