题解 | #扑克牌大小#
扑克牌大小
http://www.nowcoder.com/practice/d290db02bacc4c40965ac31d16b1c3eb
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc= new Scanner(System.in);
while(sc.hasNext()){
String s = sc.nextLine();
String[] arr = s.split("-");
System.out.println(maxCard(arr[0],arr[1]));
}
}
public static String maxCard(String s1,String s2){
//先判断有没有王炸
if(s1.equals("joker JOKER") || s1.equals("JOKER joker")){
return s1;
}else if(s2.equals("joker JOKER") || s2.equals("JOKER joker")){
return s2;
}
//如果不是王炸,那么把所有的牌用map存储
HashMap<String,Integer> map = new HashMap<String,Integer>(){
{
put("A", 14);
put("2", 15);
put("3", 3);
put("4", 4);
put("5", 5);
put("6", 6);
put("7", 7);
put("8", 8);
put("9", 9);
put("10", 10);
put("J", 11);
put("Q", 12);
put("K", 13);
put("joker", 16);
put("JOKER", 17);
}
};
//分别对两手拍牌单独处理,对应map取出第一张牌来比较
String[] arr1 = s1.split(" ");
int n1 = map.get(arr1[0]);
String[] arr2 = s2.split(" ");
int n2 = map.get(arr2[0]);
//再比较是不是炸 即4张牌一样
/*System.out.println(s1);
System.out.println(s2);
System.out.println(isBoom(s1));
System.out.println(isBoom(s2));*/
if(isBoom(s1) && isBoom(s2)){
return n1>n2?s1:s2;
}else if(isBoom(s1)){
return s1;
}else if(isBoom(s2)){
return s2;
}else if(arr1.length==arr2.length){
//如果牌数相等,即是 个数 对子 三张 顺子 因为顺序是固定的 比较第一张牌
return n1>n2?s1:s2;
}else{
//如果牌数不相等 则不存在比较关系
return "ERROR";
}
}
public static Boolean isBoom(String s1){
String[] arr3 = s1.split(" ");
String s= arr3[0];
//如果牌数没有4张 肯定不是炸
if(arr3.length!=4){
return false;
}
//如果剩余3张牌和第一张牌不相等,肯定不是炸
for(int i =1;i<4;i++){
if(!s.equals(arr3[i])){
return false;
}
}
return true;//其他情况都是炸
}
}