华为od找出斗地主中的顺子

试题大意:输入一组数据,包含2~10,以及J Q K A,不包含大小王。找出牌中的顺子。

输入: 2 9 J 10 3 4 K A 7 Q A 5 6 输出: 3 4 5 6 7 9 10 J Q K A

public class Test72 {
          
   

    /**
     * 斗地主中的顺子
     */
    public static void main(String[] args) {
          
   
        Scanner in = new Scanner(System.in);
        String[] strings = in.nextLine().split(" ");
        Map<String,Integer> map = new HashMap<>();
        Set set = new TreeSet();
        Set set1 = new TreeSet();
        for (String s : strings) {
          
   
            if (map.get(s)==null){
          
   
            map.put(s,1);
            if (NumberUtils.isDigits(s) && Integer.parseInt(s) != 2) {
          
   
                set.add(Integer.parseInt(s));
            } else if (s.equals("J")) {
          
   
                set.add(11);
            } else if (s.equals("Q")) {
          
   
                set.add(12);
            } else if (s.equals("K")) {
          
   
                set.add(13);
            } else {
          
   
                set.add(14);
            }
        }else {
          
   
                if (NumberUtils.isDigits(s) && Integer.parseInt(s) != 2) {
          
   
                    set1.add(Integer.parseInt(s));
                } else if (s.equals("J")) {
          
   
                    set1.add(11);
                } else if (s.equals("Q")) {
          
   
                    set1.add(12);
                } else if (s.equals("K")) {
          
   
                    set1.add(13);
                } else {
          
   
                    set1.add(14);
                }
            }
        }
        int size = set.size();
        int size2 =set1.size();
        Integer[] array = new Integer[size+size2];
        Iterator iterator1 = set.iterator();
        while (iterator1.hasNext()){
          
   
            for (int i = 0 ;i<size;i++){
          
   
                array[i]=(int)iterator1.next();
            }
        }
        Iterator iterator2 = set1.iterator();
        while (iterator2.hasNext()){
          
   
            for (int i = size ;i<size+size2;i++){
          
   
                array[i]=(int)iterator2.next();
            }
        }
        List<List<String>> lists = new LinkedList<>();
        int i = 0;
        while (i < size+size2 - 4) {
          
   
            List<String> stringList = new ArrayList<>();
            stringList.add(String.valueOf(array[i]));
            for (int j = 1; j < size+size2; j++) {
          
   
                if (i + j <= size+size2 - 1) {
          
   
                    if (array[i] + j == array[i + j]) {
          
   
                        if (array[i + j] == 11) {
          
   
                            stringList.add("J");
                        } else if (array[i + j] == 12) {
          
   
                            stringList.add("Q");
                        } else if (array[i + j] == 13) {
          
   
                            stringList.add("K");
                        } else if (array[i + j] == 14) {
          
   
                            stringList.add("A");
                        } else {
          
   
                            stringList.add(String.valueOf(array[i + j]));
                        }
                    } else {
          
   
                        break;
                    }
                }
            }
            i = i + stringList.size();
            if (stringList.size() >= 5) {
          
   
                lists.add(stringList);
            }
        }
        if (lists.size() == 0) {
          
   
            System.out.println("No");
        } else {
          
   
            for (List<String> list : lists) {
          
   
                for (int j = 0; j < list.size() - 1; j++) {
          
   
                    System.out.print(list.get(j) + " ");
                }
                System.out.println(list.get(list.size() - 1));
            }
        }
    }
}
经验分享 程序员 微信小程序 职场和发展