• 算法提高 12-2扑克排序


    问题描述
      扑克牌排序:构造扑克牌数组,对扑克牌进行排序。排序原则如下:数字从小到大是2-10、J、Q、K和A,花色从小到大是方块(diamond)、梅花(club)、红桃(heart)、黑桃(spade)。两张牌比较时先看数字,数字相同时看花色。要求对输入的扑克牌进行从小到大排序。
      输入五张牌(表示黑桃2、红桃3、黑桃3、方块A和梅花J): 2 s 3 h 3 s A d J c
      输出结果应为:2 s 3 h 3 s J c A d数组长度固定为5。
    样例输出
    与上面的样例输入对应的输出。
    例:
    数据规模和约定
      输入数据中每一个数的范围。
     1 import java.util.ArrayList;
     2 import java.util.Scanner;
     3 
     4 import java.util.*;
     5 import java.lang.Math;
     6 class Main {
     7     public static void main(String[] args) {
     8         Scanner input = new Scanner(System.in);
     9         String s = input.next();
    10         String[] s1 = s.split("d|c|h|s");
    11         A[] a = new A[s1.length];
    12         for(int i=0;i<s1.length;i++){
    13             a[i] = new A();
    14             a[i].data1 = s1[i];
    15             if(s1[i].equals("10")){
    16                 a[i].data = "91";
    17             }
    18             if(s1[i].equals("J")){
    19                 a[i].data = "92";
    20                 continue;
    21             }else if(s1[i].equals("Q")){
    22                 a[i].data = "93";
    23                 continue;
    24             }
    25             else if(s1[i].equals("K")){
    26                 a[i].data = "94";
    27                 continue;
    28             }else if(s1[i].equals("A")){
    29                 a[i].data = "95";
    30                 continue;
    31             }
    32             a[i].data = s1[i];
    33         }
    34         List<A> list = new ArrayList<>();
    35         int h = 0;
    36         for(int i=0;i<s.length();i++){
    37             if(s.charAt(i)=='d'){
    38                 a[h].color = 1;
    39                 a[h].color1 = "d";
    40                 list.add(a[h++]);
    41             }else if(s.charAt(i)=='c'){
    42                 a[h].color = 2;
    43                 a[h].color1 = "c";
    44                 list.add(a[h++]);
    45             }else if(s.charAt(i)=='h'){
    46                 a[h].color = 3;
    47                 a[h].color1 = "h";
    48                 list.add(a[h++]);
    49             }else if(s.charAt(i)=='s'){
    50                 a[h].color = 4;
    51                 a[h].color1 = "s";
    52                 list.add(a[h++]);
    53             }
    54             
    55         }
    56         Collections.sort(list);
    57         for(A b:list){
    58             System.out.print(b.data1+b.color1+" ");
    59         }
    60     }
    61     
    62 }
    63 class A implements Comparable<A>{
    64     String data;
    65     String data1;
    66     String color1;
    67     int color;
    68     @Override
    69     public int compareTo(A o) {
    70         // TODO Auto-generated method stub
    71         if(data.equals(o.data)){
    72             return color-o.color;
    73         }else{
    74             return data.compareTo(o.data);
    75         }
    76     }
    77 }
  • 相关阅读:
    做了一些心理学的测试,分析下个人
    做了一些心理学的测试,分析下个人
    逆转一个整数
    打印九九乘法表
    计算两个日期相差多少天
    struct的使用
    Linux Vim替换字符串的一些方法小结
    CentOS里vim基本操作
    如何创建一个后台进程
    高中是个把人分类的机器(转)
  • 原文地址:https://www.cnblogs.com/lolybj/p/6658070.html
Copyright © 2020-2023  润新知