问题分析
定义一个字符是王牌,打出第一张牌a,第二张牌b。如果只有a是王牌花色直接赢。如果a,b同花色且a>b则a赢;如果只有b是王牌,a输。如果a,b都不是王牌且不同花色,不比较直接输。
思路分析
需要判断a,b的大小和花色。由于大小等级不按ASCII码排序,那就按indexof下标排序,下标越小则牌就越小。然后根据花色判断:1.a是王牌,b不是时,a胜;2.a是王牌,b是王牌,a>b,a赢;3.a不是王牌,b不是王牌,且a,b花色一致,a>b,a赢。
代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char color=sc.nextLine().charAt(0);//存值王牌花色
String[] durak=sc.nextLine().split(" ");//获取两张牌
char[] f=durak[0].toCharArray();//此时f[0]代表第一张牌大小,[1]代表花色
char[] s=durak[1].toCharArray();//同理s[0]代表第二张牌大小,[1]代表花色
String re="NO";//初始化答案
String patemp="6789TJQKA";//存储牌型
if (f[1]==color&&s[1]!=color){//判断a是王牌,b不是的情况
re="YES";
}
else if ((
(f[1]==color&&s[1]==color)||((f[1]!=color&&s[1]!=color)
&&f[1]==s[1]))//判断a,b花色相同的情况,前者都是王牌且a>b,后者a,b都不是王牌但花色相同,且a>b
&&patemp.indexOf(f[0])>patemp.indexOf(s[0])){
re="YES";
}
System.out.println(re);
}
}
感谢您能够看到这里,一起见证小何同学的算法学习,如果您有不同的见解,希望能得到您的指点和点悟;如果您是和我一样的同学,也希望这篇文章能对您有所帮助。