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