华为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)); } } } }