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