經典算法題-撲克牌比大小


一副牌由54張組成,含3~A,2各4張,小王1張,大王1張。牌面從小到大用如下字符和字符串表示(其中,小寫joker表示小王,大寫JOKER表示大王):)
3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER
輸入兩手牌,兩手牌之間用“-”連接,每手牌的每張牌以空格分隔,“-”兩邊沒有空格,如:4 4 4 4-joker JOKER
請比較兩手牌大小,輸出較大的牌,如果不存在比較關系則輸出ERROR

基本規則:
(1)輸入每手牌可能是個子,對子,順子(連續5張),三個,炸彈(四個)和對王中的一種,不存在其他情況,由輸入保證兩手牌都是合法的,順子已經從小到大排列;
(2)除了炸彈和對王可以和所有牌比較之外,其他類型的牌只能跟相同類型的存在比較關系(如,對子跟對子比較,三個跟三個比較),不考慮拆牌情況(如:將對子拆分成個子)
(3)大小規則跟大家平時了解的常見規則相同,個子,對子,三個比較牌面大小;順子比較最小牌大小;炸彈大於前面所有的牌,炸彈之間比較牌面大小;對王是最大的牌;
(4)輸入的兩手牌不會出現相等的情況。

答案提示:
(1)除了炸彈和對王之外,其他必須同類型比較。
(2)輸入已經保證合法性,不用檢查輸入是否是合法的牌。
(3)輸入的順子已經經過從小到大排序,因此不用再排序了.

import java.util.ArrayList;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] left, right;
        String[] line;
        String nextLine, outString;
        while (sc.hasNext()) {
            nextLine = sc.nextLine();
            //有王炸就王炸最大
            if (nextLine.contains("joker JOKER")) {
                outString = "joker JOKER";
            } else {
                //拆分 先拆成左右 再拆成單排
                line = nextLine.split("-");
                left = line[0].split(" ");
                right = line[1].split(" ");
 
                //炸彈最大
                if (left.length == 4 && right.length != 4) {
                    outString = line[0];
                } else if (right.length == 4 && left.length != 4) {
                    outString = line[1];
                }
                // 牌數相同的情況下比較最小的牌的大小,compare方法返回牌所對應的值
                else if (right.length == left.length) {
                    if (count(left[0]) > count(right[0])) {
                        outString = line[0];
                    } else {
                        outString = line[1];
                    }
                } else {
                    outString = "ERROR";
                }
            }
 
            System.out.println(outString);
 
        }
    }
 
    private static int count(String str) {
        return "345678910JQKA2jokerJOKER".indexOf(str);
 
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM