题解 | #扑克牌大小#
扑克牌大小
https://www.nowcoder.com/practice/d290db02bacc4c40965ac31d16b1c3eb
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String input = in.nextLine();
String[] split = input.split("-");
String s1 = split[0];//前一手牌
String s2 = split[1];//后一手牌
//判断牌面类型
int i1 = check(s1);
int i2 = check(s2);
//类型比较,看是否可以比大小
if (i1 == 6) {
System.out.println(s1);
} else if (i2 == 6) {
System.out.println(s2);
} else if (i1 == 4) {
System.out.println(i2 == 4 ? getResult(i1, s1, s2) : s1);//炸弹比较
} else if (i2 == 4) {
System.out.println(s2);
} else if (i1 == i2) {
System.out.println(getResult(i1, s1, s2));//个子 对子 三个 同花顺 比较
} else {
System.out.println("ERROR");
}
}
private static String getResult(int type, String s1, String s2) {
String[] split1 = s1.split(" ");
String[] split2 = s2.split(" ");
int r = change(split1[0]) - change(split2[0]);
return r < 0 ? s2 : s1;
}
private static int change(String s) {
switch (s) {
case "3":
return 3;
case "4":
return 4;
case "5":
return 5;
case "6":
return 6;
case "7":
return 7;
case "8":
return 8;
case "9":
return 9;
case "10":
return 10;
case "J":
return 11;
case "Q":
return 12;
case "K":
return 13;
case "A":
return 14;
case "2":
return 15;
case "joker":
return 16;
case "JOKER":
return 17;
default:
return -1;
}
}
private static int check(String s) {
String[] ss = s.split(" ");
int length = ss.length;
if (length == 2) {
//对子
if (ss[0].equals(ss[1])) {
return 2;
} else {
//对王
return 6;
}
} else {
return length;
}
}
}
解题思路:
1, 首先分析牌面类型;
2, 根据牌面类型判断是否可以比较;
3, 可以比较的情况下, 进行牌面的比较, 得出结论
