实现一个挺高级的字符匹配算法:
给一串很长字符串,要求找到符合要求的字符串,例如目的串:123
给一串很长字符串,要求找到符合要求的字符串,例如目的串: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]);
}
}
}