⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 在n 张扑克牌中找出顺子.java

📁 Java: 在n 张扑克牌中找出顺子 题目是这样的:有n张扑克牌
💻 JAVA
字号:
import java.util.ArrayList;
import java.util.TreeSet;

public class Main ...{

    /** *//**
     * @param args
     */
    public static void main(String[] args) ...{

        String[] cards = ...{"6", "2" ,"3" ,"7" ,"4", "5", "8", "8", "10", "10", "10", "J", "K", "Q", "A"};
        TreeSet<Integer> set = init(cards);    //将字符串表示的扑克牌转换为数字,便于处理
        ArrayList<String> result = check(set);    //找出顺子
        printResult(result);    //打印顺子
        System.out.println("程序结束!!");
    }
    
    private static TreeSet<Integer> init(String[] cards) ...{
        TreeSet<Integer> set = new TreeSet<Integer>();
        for(String s:cards) ...{
            if(s.charAt(0)>='1'&&s.charAt(0)<='9') ...{
                set.add(Integer.parseInt(s));
            }else ...{
                switch(s.toUpperCase().charAt(0)) ...{
                case 'J':
                    set.add(11);    break;
                case 'Q':
                    set.add(12);    break;
                case 'K':
                    set.add(13);    break;
                case 'A':
                    set.add(14);    break;
                }
            }
        }
        return set;
        
    }
    
    private static ArrayList<String> check(TreeSet<Integer> set) ...{
        ArrayList<String> result = new ArrayList<String>();
        StringBuilder temp = new StringBuilder();
        int count = 0;
        Integer[] nums = new Integer[1];
        nums = set.toArray(nums);
        int begin = 0;
        for(Integer i:set) ...{
            if(count == 0) ...{
                begin = i;
                count++;
                temp.append(numToCard(begin));
            }else if(i == begin+count) ...{
                temp.append(", "+numToCard(i));
                count++;
            }else ...{
                if(count>4) ...{
                    result.add(temp.toString());
                }
                begin = i;
                temp.replace(0, temp.length(), numToCard(i)+"");
                count = 1;
            }
        }
        
        if(count>4)        result.add(temp.toString());
        return result;
    }
    
    private static String numToCard(int x) ...{
        if(x>10) ...{
            switch(x) ...{
            case 11:
                return "J";
            case 12:
                return "Q";
            case 13:
                return "K";
            case 14:
                return "A";
            }
        }else ...{
            return x+"";
        }
        return null;
    }
    
                     //可以将长顺子分解为短顺子的打印模式
    private static void printResult1(ArrayList<String> result) ...{

        int count = 0;
        String[] nodes = null;
        if(result.size() == 0) ...{
            System.out.println("没有顺子!!");
        }else ...{
            for(String s:result) ...{
                nodes = s.split(",");
                count += (1+(nodes.length-4))*(nodes.length-4)/2;
            }
            System.out.println("共有"+count+"个顺子:");
            for(String s:result) ...{
                nodes = s.split(",");
                for(int i=5; i<=nodes.length; i++)
                    for(int j=0; i-j>4; j++) ...{
                        System.out.print(nodes[j].trim());
                        for(int x = j+1; x<i; x++) ...{
                            System.out.print("," + nodes[x]);
                        }
                        System.out.println();
                    }
            }
        }
    }

                     //不将长顺子进行分解的打印模式
    private static void printResult2(ArrayList<String> result) ...{
        if(result.size() == 0) ...{
            System.out.println("没有顺子!!");
        }else ...{
            System.out.println("共有"+result.size()+"个顺子:");
            for(String s:result) ...{
                System.out.println(s);
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -