栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

贪心算法,暴力匹配

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

贪心算法,暴力匹配

package alogrithm;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
public class greedyalogrithm {
    public static void main(String[] args) {
        HashMap> broadcast=new HashMap<>();
        HashSet set1=new HashSet<>();set1.add("北京");set1.add("天津");set1.add("上海");
        HashSet set2=new HashSet<>();set2.add("北京");set2.add("广州");set2.add("深圳");
        HashSet set3=new HashSet<>();set3.add("成都");set3.add("杭州");set3.add("上海");
        HashSet set4=new HashSet<>();set4.add("天津");set4.add("上海");
        HashSet set5=new HashSet<>();set5.add("杭州");set5.add("大连");
        broadcast.put("k1",set1);broadcast.put("k2",set2);broadcast.put("k3",set3);broadcast.put("k4",set4);broadcast.put("k5",set5);
        HashSet allAreas=new HashSet<>();allAreas.add("北京");allAreas.add("天津");allAreas.add("深圳");allAreas.add("杭州");allAreas.add("大连");allAreas.add("上海");allAreas.add("成都");allAreas.add("广州");
        ArrayList selects=new ArrayList<>();
        HashSet tempset=new HashSet<>();
        String maxkey=null;
        while(allAreas.size()>0)
        {
            maxkey=null;
            for(String tempkey:broadcast.keySet())
            {
                tempset.clear();
                Set area=broadcast.get(tempkey);
                tempset.addAll(area);
                tempset.retainAll(allAreas);
                if((tempset.size()>0&&maxkey==null)||(tempset.size()>0&&tempset.size()>broadcast.get(maxkey).size()))
                {//遍历找到新城市最多的k
                    maxkey=tempkey;
                }
            }
            if(maxkey!=null)
            {
                selects.add(maxkey);//直接把key存进,不用对应的value
                allAreas.removeAll(broadcast.get(maxkey));
            }
        }
        System.out.println("选择的广播站"+selects);
    }
}//第一次selects为空,tempset{"北京","天津","上海"}和allAreas{"北京",“天津”,"上海","深圳","成都","广州","杭州","大连"}取交集之后{“北京”,"天津","上海"}选中的maxkey就是k1,selects里面{"北京",“天津”,"上海"}allAreas{"深圳","成都","广州","杭州","大连"}
//第二次tempset和allAreas{"深圳","成都","广州","杭州","大连"}取交集之后{“广州”,"深圳"}maxkey是k2,selects里面有{"北京",“天津”,"上海","广州","深圳"}alllAreas{"成都","杭州","大连"}
//第三次tempset和alllAreas{"成都","杭州","大连"}取交集之后{“成都”,"杭州"}maxkey是k3,selects里面有{"北京",“天津”,"上海","广州","深圳",“成都”,"杭州"}allAreas{“大连”}
//第四次tempset和allAreas{"大连"}取交集之后{"大连}maxkey是k5,selects里面有{"北京",“天津”,"上海","广州","深圳",“成都”,"杭州","大连"}allAreas为空
//打印出的select是k1...不是value
package mylearn.bst;

public class ViolenceMatch {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str1 = "塞尔ab达塞尔达";
		String str2 = "塞尔达";
		int index = violenceMatch(str1, str2);
		System.out.println("index=" + index);
	}
	public static int violenceMatch(String str1, String str2) {
		char[] s1 = str1.toCharArray();
		char[] s2 = str2.toCharArray();
		int s1Len = s1.length;
		int s2Len = s2.length;
		int i = 0; 
		int j = 0;
		while (i < s1Len && j < s2Len)
		{
			if(s1[i] == s2[j])
			{
				i++;j++;
			} else
			{
				i = i - (j - 1);
				j = 0;
			}
		}
		if(j == s2Len)
		{return i - j;}
		else
		{return -1;}
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/860167.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号