华为OD机试真题 Java 实现【斗地主之顺子】【2023 B卷 100分】,附详细解题思路

news2024/12/24 2:07:11

在这里插入图片描述

一、题目描述

在斗地主扑克牌游戏中,扑克牌由小到大的顺序为: 3.4.5.6.7.8.9.10.J.Q.K A.2,玩家可以出的扑克牌阵型有: 单张、对子、顺子、飞机、炸弹等。

其中顺子的出牌规则为: 由至少 5 张由小到大连续递增的扑克牌组成,且不能包含 2。

例如: {3,4,5,6,7}、{13,4,5,6,7,8,9,10,J,Q,K,A}都是有效的顺子;而{J,Q,K,A,2}、{2,3,4,5,6}、
{3,4,5,6}.{3,4,5,6,8}等都不是顺子。

给定一个包含 13 张牌的数组,如果有满足出牌规则的顺子,请输出顺子

如果存在多个顺子,请每行输出一个顺子,且需要按顺子的第一张牌的大小(必须从小到大)依次输出。

如果没有满足出牌规则的顺子,请输出 No。

二、输入描述

13 张任意顺序的扑克牌,每张扑克牌数字用空格隔开,每张扑克牌的数字都是合法的,并且不包括大小王

2 9 J 2 3 4 K A 7 9 A 5 6

不需要考虑输入为异常字符的情况

三、输出描述

组成的顺子,每张扑克牌数字用空格隔开。

四、Java算法源码

// 是否可以组成顺子
private static boolean flag = false;

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String[] input = sc.nextLine().split(" ");
    int[] arr = new int[input.length];
    for (int i = 0; i < arr.length; i++) {
        String tem = input[i];
        if (tem.equals("A")) {
            arr[i] = 14;
        } else if (tem.equals("J")) {
            arr[i] = 11;
        } else if (tem.equals("Q")) {
            arr[i] = 12;
        } else if (tem.equals("K")) {
            arr[i] = 13;
        } else {
            arr[i] = Integer.parseInt(tem);
        }
    }
    // 将扑克牌排序
    Arrays.sort(arr);
    int start = 0;
    int temp = 0;
    for (int i = 0; i < arr.length; i++) {
        // 2不能顺子
        if (arr[i] == 2) {
            continue;
        }

        if (start == 0) {
            start = arr[i];
            temp = arr[i];
            continue;
        }

        if (arr[i] == temp) {
            continue;
        }
        if (arr[i] == temp + 1) {
            temp = arr[i];
        } else {
            if (temp - start >= 4) {
                print(start, temp);
            }
            start = 0;
            temp = 0;
        }
    }
    if (temp - start >= 4) {
        print(start, temp);
    }
    if (!flag) {
        System.out.println("NO");
    }
}

private static void print(int start, int end) {
    flag = true;
    for (int j = start; j <= end; j++) {
        if (j == 14) {
            System.out.print("A ");
        } else if (j == 11) {
            System.out.print("J ");
        } else if (j == 12) {
            System.out.print("Q ");
        } else if (j == 13) {
            System.out.print("K ");
        } else {
            System.out.print(j + " ");
        }
    }
    System.out.println();
}

五、效果展示

1、输入

2 9 J 2 3 4 K A 7 9 A 5 6

2、输出

3 4 5 6 7

在这里插入图片描述

3、再输入

5 9 Q 7 3 4 K A 10 J A 2 6

4、再输出

3 4 5 6 7
10 J Q K A

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/618311.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RK1126 NPU yolov5 6.2

基于 rk npu &#xff0c; 实现 yolov5 6.2 模型推理 实现过程 ⚡️​ 编译 opencv 需根据自己路径修改. cmake -D CMAKE_BUILD_TYPERELEASE \-D CMAKE_C_COMPILER./gcc-arm-8.3-2019.02-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \-D CMAKE_CXX_COMPILER./gc…

VMware虚拟机Ubuntu磁盘空间扩充详细教程

文章目录 一、写在前面二、具体步骤三、最后总结 一、写在前面 最近在做Linux内核相关实验的时候&#xff0c;发现有时候我们编译出来的内核太大&#xff0c;如果VMware虚拟机空间分配不足会导致编译Linux内核失败&#xff0c;经过摸索&#xff0c;发现可以扩充Ubuntu的磁盘空间…

【Rust日报】2023-06-05 Effective Rust: 35种提升 Rust 代码的方法

Effective Rust: 35种提升Rust代码的方法 这是一本关于 Rust 的最佳实践指南的电子书&#xff0c;其中包含了很多 Rust 编程的技巧和建议。 这篇指南分为多个章节&#xff0c;涵盖了 Rust 编程的各个方面, 他分别从 类型, 概念, 依赖, 工具 等几大类上阐述了 35 种提高 Rust 代…

记录--你真的能区分JavaScript的各种导入导出方式吗?

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前言 &#x1f6f0;&#x1f6f0; 我们在无论是在查阅别人的代码&#xff0c;还是在实际项目开发的过程中&#xff0c;肯定都会使用导入导出的功能&#xff0c;有时候我们会搞混这几种方式到底有什么区…

有哪些比较好的游戏图标推荐

游戏图标设计在游戏UI中占有非常重要的地位。例如&#xff0c;当我们看到一个游戏的启动图标时&#xff0c;很容易区分它是哪个游戏。设计游戏图标不仅是一个图形&#xff0c;也是一个标志。 本文将通过各种游戏图标设计素材分享游戏图标的类别和设计游戏图标的思考。 1. 游戏…

基于SSM+JSP的大学生校园兼职系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

wsl连接usb设备,以及挂载u盘

目录 wsl连接usb设备 安装usbinpd-win 配置 在kali中做写的配置 在wsl中的配置 在kali中查看附加结果 报错 挂载u盘&#xff0c;查看u盘的内容 wsl连接usb设备 安装usbinpd-win winget install --interactive --exact dorssel.usbipd-win 配置 在kali中做写的配置 s…

Java 21 将不再有public static void main !

之前的Java是这样&#xff1a; Java 21会是这样&#xff1a; 看到这个消息&#xff0c;我最大的感受是&#xff1a; 卧槽&#xff0c;怎么就Java 21了&#xff1f;&#xff01;我还在用Java 8 呢&#xff01; 实际上&#xff0c;从Java 8 到Java 21&#xff0c;中间也就是Java…

“Pull”和“Push”支付的区别

下图展示了“Pull”和“Push”支付的工作原理。 当我们在商家处刷信用卡/借记卡时&#xff0c;这是一种“Pull”支付&#xff0c;资金从持卡人的账户发送到商家。商家从持卡人的账户中取款&#xff0c;而持卡人批准交易。 通过Visa Direct或Mastercard Send&#xff0c;推送支付…

WebRTC实战 | 视频云

前言 WebRTC是当前实时通信领域的重要技术之一&#xff0c;具有广泛的应用前景。可以实现音频、视频和数据的实时传输。支持点对点通信、多方会议、屏幕共享等多种应用场景&#xff0c;同时具有高质量、低延迟、强安全性等特点&#xff0c;是开发实时通信应用的理想选择。可以应…

从“嘿,Siri”到元宇宙,苹果还有多远距离要走?

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 在当前的科技浪潮中&#xff0c;元宇宙的概念凭借其无限的想象力和可能性&#xff0c;像一颗耀眼的新星吸引着世界的目光。巨大的发展潜力&#xff0c;吸引着一波又一波的企业&#xff0c;前赴后继地向元宇宙发起冲锋。 在这…

27.打包项目

目录 1 打包成dist 2 flask配合dist 3 以文件形式打开 1 打包成dist 项目路径下输入 npm run build 在项目路径下会出现一个dist 打包后直接双击打开index.html是没有用的 因为你双击打开是file协议&#xff0c;你需要一个http协议 2 flask配合dist 我们可以搞一个fla…

「企业信息架构」EA874:信息架构治理概述

信息治理是一个程序&#xff0c;它实现决策权和支持机制&#xff0c;以确保整个企业信息的准确性、完整性、一致性、可访问性和安全性。为了维持信息治理&#xff0c;需要在业务&#xff08;而不是IT&#xff09;中确定和建立几个角色。这三个角色可能单独存在&#xff0c;也可…

分布式光伏消纳的微电网群共享储能配置策略研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【AUTOSAR】Bootloader说明(四)---- 升级主函数

刷新主函数uds_refresh_main() 当执行完初始化后&#xff0c;DSP进入刷新主函数。 主函数是一个无穷循环函数&#xff0c;完成诊断消息的接收、处理&#xff0c;诊断状态的刷新等。 函数原型 void bblk_normal_isr(void) 函数作用 完成看门狗服务&#xff0c;清楚定时器中…

如何在ImageSpan上面绘制文本?

简介&#xff1a;TextOnImageSpan 前阵子碰到一个需求&#xff1a;在文本中内嵌图标&#xff0c;并在图标上面绘制特定文本。很自然就会想到用SpannableString去实现&#xff0c;但经过一系列的研究捣鼓&#xff0c;发现根本就没有能在图标上绘制文本的span类&#xff0c;于是乎…

单马达可换档六足机器人前进功能的实现

1. 运动功能说明 本文示例将实现R046样机单马达可换档六足机器人前进的功能。 2. 结构说明 本样机只有一个圆周舵机&#xff0c;却可以通过换挡机构实现前进和转向两种行走姿态。 样机由一个圆周舵机带动一个等速齿轮组&#xff08;下图所示两枚蓝色齿轮&#xff09;&#xff0…

C#,码海拾贝(26)——求解“一般带状线性方程组”之C#源代码

在大型稀疏方程组中&#xff0c;最常见的是带状方程组&#xff0c;其系数矩阵是带状矩阵&#xff0c;非零元素仅集中在对角线附近的带状区域内。 特别的&#xff0c;当上下带宽相等时我们A称方程组为等带宽方程组。总带宽为3的等带宽方程组我们又叫三对角方程组。 using Syste…

如何在 Elasticsearch 论坛/社群上提出高质量的技术问题?

在网络的海洋中寻求帮助&#xff0c;有时可能会让你感到茫然。你可能已经准备好详细描述你的问题&#xff0c;但如果你不知道如何有效地提问&#xff0c;你可能会发现自己在等待回答时感到挫败。 这篇文章的目标是为你提供一些提示&#xff0c;让你更快地获取你在论坛上的技术问…

数据库管理-第八十二期 EMCC升级教程(20230606)

数据库管理 2023-06-06 第八十二期 EMCC升级教程1 升级EMCC1.1 升级概览1.2 拷贝相关文件1.3 升级OPatch1.4 升级OMSPatcher1.5 升级WLS1.6 升级OMS 2 升级Agent2.1 升级概览2.2 拷贝相关文件2.3 安装或升级AgentPatcher2.4 升级agent 3 升级Oracle数据库ASH包总结 第八十二期 …