现在的位置: 首页 > 综合 > 正文

给一串很长字符串,要求找到符合要求的字符串,类似“和谐”系统

2017年12月04日 ⁄ 综合 ⁄ 共 740字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.