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;}
}
}