原题链接:蓝桥杯算法提高VIP-扑克排序
解题思路: 将J、Q、C、A分别替换成abcd以便排序,将dchs分别替换成1234以便于排序,然后用StringBuilder的对象
sb存储替换后的字符串,将每一个牌都存储到ArrayList中排序,排序后,用StringBuilder的对象sb1来存储排完序后的字符串,随后还原为原来的字符串,输出。
注意事项:注意大小写,且每次输入都是固定的5张牌。
参考代码:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<String> arrayList = new ArrayList<>();
//存储无序的牌
String s = sc.nextLine();
//存储变换后的牌
StringBuilder sb = new StringBuilder();
//变换字符串
for (int i=0;i<s.length();i++){
if (s.charAt(i)=='J'){
sb.append("A");
}else if(s.charAt(i)=='Q'){
sb.append("B");
}else if (s.charAt(i)=='K'){
sb.append("C");
}else if(s.charAt(i)=='A'){
sb.append("D");
}else if (s.charAt(i)=='d'){
sb.append("1");
}else if (s.charAt(i)=='c'){
sb.append("2");
}else if (s.charAt(i)=='h'){
sb.append("3");
}else if (s.charAt(i)=='s'){
sb.append("4");
}
//如果是2到10,就不需要变换
else {
sb.append(s.charAt(i));
}
}
//存储到ArrayList数组中。
for (int i=0;i<10;i+=2){
arrayList.add(sb.substring(i,i+2));
}
//排序
arrayList.sort(new Comparator<String>() {
@Override
public int compare(String s, String t1) {
if (s.charAt(0)==t1.charAt(0)){
return s.charAt(1)-t1.charAt(1);
}else {
return s.charAt(0)-t1.charAt(0);
}
}
});
//存储排完序后的数组
StringBuilder sb1 = new StringBuilder();
//将排完序后的字符串变换成原来的样子
for (int i=0;i<arrayList.size();i++){
if (arrayList.get(i).charAt(0)=='A'){
sb1.append("J");
}else if(arrayList.get(i).charAt(0)=='B'){
sb1.append("Q");
}else if (arrayList.get(i).charAt(0)=='C'){
sb1.append("K");
}else if(arrayList.get(i).charAt(0)=='D'){
sb1.append("A");
}else {
sb1.append(arrayList.get(i).charAt(0));
}
if (arrayList.get(i).charAt(1)=='1'){
sb1.append("d");
}else if (arrayList.get(i).charAt(1)=='2'){
sb1.append("c");
}else if (arrayList.get(i).charAt(1)=='3'){
sb1.append("h");
}else if (arrayList.get(i).charAt(1)=='4'){
sb1.append("s");
}
else {
sb1.append(arrayList.get(i).charAt(1));
}
}
s=sb1.substring(0,sb1.length());
for (int i=0;i<10;i+=2){
System.out.print( s.substring(i,i+2)+" ");
}
}0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复