最长的顺子
//1、输入的牌
Scanner in = new Scanner(System.in);
String ownList = in.nextLine();
String tableList =in.nextLine();
String all = ownList+ "-"+tableList;
String[] all1 = all.split("-");
//2、 所有的牌
HashMap<String, Integer> map = new LinkedHashMap<>();
for (int i = 3; i <= 10; i++) {
map.put(i+"",4); }
map.put("J",4);
map.put("Q",4);
map.put("K",4);
map.put("A",4);
//3、剩下的牌(对方可能存在的牌)
for (int i = 0; i < all1.length; i++) {
String p= all1[i];
map.put(p,map.get(p)-1);
}
System.out.println("剩余牌==="+map);
// JQKA转换为数字,方便判断连续
ArrayList<Integer> othersList = new ArrayList<>();
for (String s : map.keySet()) {
if (map.get(s)!=0){
if(s.equals("J")){
othersList.add(11);
}else if(s.equals("Q")){
othersList.add(12);
}else if(s.equals("K")){
othersList.add(13);
}else if(s.equals("A")){
othersList.add(14);
}else {
othersList.add(Integer.parseInt(s));
}
}
}
// 4、判断剩下的牌,可以形成几个顺子,
ArrayList<ArrayList<String>> reslutList = new ArrayList<>();
//滑动窗口,5为步长
for (int i = 0; i <= othersList.size()-5; i=i+5) {
//判断连续
Boolean flag = true;
for (int j = 1; j < 5; j++) {
if (othersList.get(i+j) != othersList.get(i+j - 1)+1 ){
flag = false;
}
}
// 如果 TRUE ,则可以形成顺子
ArrayList<String> sunList = new ArrayList<>();
if (flag){
for (int j = 0; j < 5; j++) {
System.out.print(othersList.get(i+j));
String pai = othersList.get(i+j)+"";
if(pai.equals("11")){
sunList.add("J");
}else if(pai.equals("12")){
sunList.add("Q");
}else if(pai.equals("13")){
sunList.add("K");
}else if(pai.equals("14")){
sunList.add("A");
}else {
sunList.add(pai);
}
}
reslutList.add(sunList);
System.out.println("============");
}
}
System.out.println(reslutList);
// 5、找到最大顺子
if (reslutList.size()!=0){
ArrayList<String> temp = new ArrayList<>();
temp.add("0");
for (List<String> value : reslutList ) {
if (Integer.valueOf(value.get(0))>Integer.valueOf(temp.get(0))){
temp= (ArrayList<String>) value;
}
}
for (String s : temp) {
System.out.print(s);
}
}else {
System.out.println("NO-CHAIN");
}