题目描述
斗地主起源于湖北十堰房县,据说是一位叫吴修全的年轻人根据当地流行的扑克玩法“跑得快”改编的,如今已风靡整个中国,并流行于互联网上。
牌型: 单顺,又称顺子,最少5张牌,最多12张牌(3…A)不能有2,也不能有大小王,不计花色。
例如: 3-4-5-6-7-8,7-8-9-10-J-Q,3-4-5-6-7-8-9-10-J-Q-K-A
可用的牌 3<4<5<6<7<8<9<10<J<Q<K<A<2<B(小王)<C(大王),每种牌除大小王外有四种花色 (共有13×4+2张牌)
输入
输入的第一行为当前手中的牌
输入的第二行为已经出过的牌(包括对手出的和自己出的牌)
输出
最长的顺子
对手可能构成的最长的顺子(如果有相同长度的顺子,输出牌面最大的那一个),
如果无法构成顺子,则输出 NO-CHAIN。
样例输入
3-3-3-4-4-5-5-6-7-8-9-10-J-Q-K-A-A-A-A
4-5-6-7-8-8-8
样例输出
9-10-J-Q-K
import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner ins = new Scanner(System.in);
String[] mycard = ins.next().split("-");
String[] outcard = ins.next().split("-");
Map<String, Integer> map = new HashMap<>();
List<String> list = Arrays.asList("A","3","4","5","6","7","8", "9","10","J","Q","K");
List<String> outputList = new ArrayList<>();
List<String> firstmatchList = new ArrayList<>();
list.stream().forEach(e->{
map.put(e, 4);
});
Arrays.asList(mycard).stream().forEach(e->{
map.put(e, map.get(e) - 1);
});
Arrays.asList(outcard).stream().forEach(e->{
map.put(e, map.get(e) - 1);
});
//map里剩下的就是对手的牌数量
int count = 0;
for(int i=3; i< 15; i++){
if(map.get(match(i)) != 0){
outputList.add(match(i));
count ++;
}else{
if(count < 5){
outputList.clear();
count = 0;
}else{
firstmatchList = new ArrayList<>(outputList);
outputList.clear();
count = 0;
}
}
}
if(count >=5){
if(firstmatchList.size() > outputList.size()){
System.out.println(output(firstmatchList));
}else{
System.out.println(output(outputList));
}
}else{
if(firstmatchList.size() == 0){
System.out.println("NO CHAIN");
}else{
System.out.println(output(firstmatchList));
}
}
}
public static String match(int a){
switch (a){
case 11: return "J";
case 12: return "Q";
case 13:return "K";
case 14:return "A";
default: return String.valueOf(a);
}
}
public static String output(List<String> list){
StringBuffer buffer = new StringBuffer();
list.forEach(e->{
buffer.append(e).append("-");
});
return buffer.toString().substring(0, buffer.length() - 1);
}
}