給一串很長字符串,要求找到符合要求的字符串,類似“和諧”系統

實現一個挺高級的字符匹配算法: 
給一串很長字符串,要求找到符合要求的字符串,例如目的串: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]);
			}
		}
		
	}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章