华为OD机试 - 数字字符串组合倒序 - 正则表达式(Java 2023 B卷 100分)

news2025/3/1 21:59:18

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
      • 1、熟读题意,大概理解为:
      • 2、我理解 “-”作为连接符使用时作为字符串的一部分 的意思是:
      • 3、解决本题的关键是正则表达式的使用。
    • 五、Java算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

对数字,字符,数字串,字符串,以及数字与字符串组合进行倒序排列。
字符范围:由 a 到 z, A 到 Z,
数字范围:由 0 到 9

符号的定义:

  • “-”作为连接符使用时作为字符串的一部分,例如“20-years”作为一个整体字符串呈现;
  • 连续出现 2 个 “-” 及以上时视为字符串间隔符,如“out–standing”中的”–“视为间隔符,是 2 个独立整体字符串”out”和”standing”;
  • 除了 1,2 里面定义的字符以外其他的所有字符,都是非法字符,作为字符串的间隔符处理,倒序后间隔符作为空格处理;
  • 要求倒排后的单词间隔符以一个空格表示;如果有多个间隔符时,倒排转换后也只允许出现一个字格间隔符;

二、输入描述

一行字符串。

三、输出描述

根据“符号的定义”规则,倒序输出一行字符串。

四、解题思路

1、熟读题意,大概理解为:

  1. “-”作为连接符使用时作为字符串的一部分;
  2. 连续出现 2 个 “-” 及以上时视为字符串间隔符;
  3. 其它字符作为字符串的间隔符处理,倒序后间隔符作为空格处理;
  4. 要求倒排后的单词间隔符以一个空格表示;如果有多个间隔符时,倒排转换后也只允许出现一个字格间隔符。

2、我理解 “-”作为连接符使用时作为字符串的一部分 的意思是:

  1. 如果“-”在某字符串中间,视为字符串的一部分,要保留;
  2. 如果“-”在某字符串的两头,则不能视为字符串的一部分,要去掉。

3、解决本题的关键是正则表达式的使用。

五、Java算法源码

package com.guor.od;

import java.util.*;

public class OdTest02 {
    /**
     * “-”作为连接符使用时作为字符串的一部分
     * 连续出现 2 个 “-” 及以上时视为字符串间隔符
     * 其它字符作为字符串的间隔符处理,倒序后间隔符作为空格处理
     * 要求倒排后的单词间隔符以一个空格表示;如果有多个间隔符时,倒排转换后也只允许出现一个字格间隔符
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        // 除了“0-9a-zA-Z-”以外的其它字符作为字符串的间隔符处理
        String regular = "[^0-9a-zA-Z-]";
        String[] arr = input.split(regular);
        List<String> list = new ArrayList<String>();
        for (String str : arr) {
            // 删掉每个字符串中的多余空格
            if (str.replaceAll(" ", "").length() == 0) {
                continue;
            }

            // 连续出现 2 个 “-” 及以上时视为字符串间隔符
            if(str.contains("--")){
                // 正则表达式。匹配连续出现 2 个 “-”
                String regex = "-{2,}";
                str = str.replaceAll(regex, " ");
            }

            /**
             * “-”作为连接符使用时作为字符串的一部分
             * 这句话我的理解是如果“-”在某字符串中间,视为字符串的一部分,要保留
             * 如果“-”在某字符串的两头,则不能视为字符串的一部分,要去掉
             */
            if (str.startsWith("-")) {
                str = str.substring(1);
            }

            if (str.endsWith("-")) {
                str = str.substring(0, str.length() - 1);
            }

            for (String item : str.split(" ")) {
                if (item.replaceAll(" ", "").length() == 0) {
                    continue;
                }
                list.add(item);
            }
        }

        // 正序输出,查看特殊字符替换情况
        System.out.println("正序输出,查看特殊字符替换情况:");
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i) + " ");
        }
        System.out.println();
        // 要求倒排后的单词间隔符以一个空格表示
        System.out.println("要求倒排后的单词间隔符以一个空格表示:");
        for (int i = list.size() - 1; i >= 0; i--) {
            System.out.print(list.get(i) + " ");
        }
    }
}

六、效果展示

1、输入

-Nezha loves ^learning–java ## and has—been ** # -doing-it for 10-years-

2、输出

10-years for doing-it been has and java learning loves Nezha

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【简易内存池】【2023 B卷 200分 考生抽中题】

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

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

相关文章

142页大型制造企业IT蓝图、信息化系统技术架构规划与实施方案PPT

导读&#xff1a;原文《142页大型制造企业IT蓝图、信息化系统技术架构规划与实施方案PPT》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 完整版领取方式 完整版领取…

新能源电动车充电桩控制主板的三大保护功能

新能源电动车充电桩控制主板的三大保护功能 你是否曾经遇到过电动车充电时电流过大&#xff0c;电压不稳定&#xff0c;或者电池过热的情况?这些问题都可能会给你的电动车带来安全隐患。那么&#xff0c;如何避免这些问题的发生呢?让我们一起来探讨一下充电桩控制主板的保护功…

这款编程语言,竟然没有程序员使用,却人丁兴旺

人丁兴旺 现在&#xff0c;编程语言种类繁多&#xff0c;比如Java、Python、C等&#xff0c;每种语言都有其特定的应用场景和优势。 然而&#xff0c;让我们感到惊奇的是&#xff0c;有一款编程语言&#xff0c;它并没有广大的程序员使用&#xff0c;却依然能够在编程世界中独…

初阶C语言-结构体

&#x1f31e; “少年有梦不至于心动&#xff0c;更要付诸行动。” 今天我们一起学习一下结构体的相关内容&#xff01; 结构体 &#x1f388;1.结构体的声明1.1结构的基础知识1.2结构的声明1.3结构成员的类型1.4结构体变量的定义和初始化 &#x1f388;2.结构体成员的访问2.1结…

04-微信小程序常用组件-基础组件

04-微信小程序常用组件-基础组件 文章目录 基础内容icon 图标案例代码 text 文本案例代码 progress 进度条案例代码 微信小程序包含了六大组件&#xff1a; 视图容器、 基础内容、 导航、 表单、 互动和 导航。这些组件可以通过WXML和WXSS进行布局和样式设置&#xff0c…

我还不知道?Android组件化插件化模块化

Android组件化、插件化和模块化是针对Android应用程序开发的一种架构设计思想和开发方式。 组件化&#xff08;Componentization&#xff09;&#xff1a; 组件化是将一个大型的Android应用程序拆分成多个独立的组件&#xff08;Module&#xff09;&#xff0c;每个组件可以独…

SUMO 创建带有停车位的充电站 在停车位上充电

前言 SUMO提供的Charging Station是没有停车位的&#xff0c;车辆只有在通过充电站区域或者停在充电站区域内时才能被充电&#xff0c;这时充电的车辆就会占用道路。然而&#xff0c;真实世界中的情况通常是充电站设在路边&#xff0c;且提供一定量的车位用于停车&#xff0c;…

探索OLED透明屏的多领域应用:技术驱动的未来之窗

OLED透明屏作为一项具有突破性技术的新兴产品&#xff0c;正在各个领域展现无限的可能性。 其独特的透明性和高对比度&#xff0c;使其在智能家居、汽车行业、商业展示、航空航天、教育与培训以及医疗健康等领域中得到广泛应用。 那么&#xff0c;尼伽将详细探讨OLED透明屏在…

程序的DAC检查与LSM简介

程序的DAC检查 在Linux中&#xff0c;程序的DAC&#xff08;Discretionary Access Control&#xff0c;自主访问控制&#xff09;检查是指操作系统对程序执行期间对文件和资源的访问权限进行的检查。 Linux使用一种基于权限的访问控制模型&#xff0c;其中每个文件和资源都与…

Linux学习之iptables过滤规则的使用

cat /etc/redhat-release看到操作系统是CentOS Linux release 7.6.1810&#xff0c;uname -r看到内核版本是3.10.0-957.el7.x86_64&#xff0c;iptables --version可以看到iptables版本是v1.4.21。 iptables -t filter -A INPUT -s 10.0.0.8 -j ACCEPT会在最后一行插入。 10…

借用空数组方法:处理类数组的对象的实用技巧

前言 NodeList 不是一个数组&#xff0c;是一个类似数组的对象 (Like Array Object)。虽然 NodeList 不是一个数组&#xff0c;但是可以使用 forEach() 来迭代。你还可以使用 Array.from() 将其转换为数组。 不过&#xff0c;有些浏览器较为过时&#xff0c;没有实现 NodeList.…

C++项目实战之演讲比赛流程管理系统

演讲比赛流程管理系统 1. 演讲比赛程序需求 1.1 比赛规则 学校举行一场演讲比赛&#xff0c;共有12个人参加。比赛共两轮&#xff0c;第一轮为淘汰赛&#xff0c;第二轮为决赛 每名选手都有对应的编号&#xff0c;如 10001 ~ 10012 比赛方式&#xff1a;分组比赛&#xff0…

git提交代码是用git-merge还是git-rebase呢?

什么是git merge&#xff1f; git merge是我们在git操作中频繁会用到的一个命令&#xff0c;它主要实现的功能便是为我们进行分支代码的合并&#xff0c;也就是将两个或两个以上的开发历史合并在一起的操作。 它有以下两种用途&#xff1a; 更新代码时&#xff0c;整合另一个…

行业资讯丨“燃气智慧化”到底是什么?

文章来源&#xff1a;网络 关键词&#xff1a;智慧燃气、智慧燃气场站、设备设施数字化、数字孪生、工业互联网 带你了解燃气信息化 随着科技的不断进步和信息化的快速发展&#xff0c;各行各业都在积极探索如何将技术应用于业务中&#xff0c;以提高效率和服务质量。 燃气…

Java实现钉钉企业内部应用机器和自定义机器人发送消息

前言 公司让写一个服务监控的功能,当监测到服务停止时,向钉钉群里推送报警信息。之前大概看到钉钉的开放平台的API文档,好像能群发消息的只有机器人。 钉钉开放平台目前提供三种机器人: 企业内部应用机器人 群模板机器人 自定义机器人 本来向用自己比较熟悉的自定义机器人…

初试时间官宣!研招网发布下半年重要时间节点!今日速报来了

距24考研初试还有127天&#xff0c;今天给大家带来初试和报名时间官宣消息、考研报名注意事项、研招网发布的2024考研“保姆级”下半年重要时间节点。有用记得收藏 24考研报名和初试时间官宣 已有学校在招生简章中明确24考研初试时间 初试时间预计为&#xff1a;2023年12月23…

当我们都是那个“和尚”:团队合作中的责任与动力

引言&#xff1a;三个和尚的故事 中国的古老民间故事中&#xff0c;有一个被广为传颂的故事 - 三个和尚的故事。该故事描述了三位和尚居住在远离水源的山上寺庙中。当只有一个和尚时&#xff0c;他每天下山提水&#xff0c;日复一日&#xff0c;从未间断。但当寺庙里有了三个和…

【Java】常见面试题:HTTP/HTTPS、Servlet、Cookie、Linux和JVM

文章目录 1. 抓包工具&#xff08;了解&#xff09;2. 【经典面试题】GET和POST的区别&#xff1a;3. URL中不是也有这个服务器主机的IP和端口吗&#xff0c;为啥还要搞个Host&#xff1f;4. 补充5. HTTP响应状态码6. 总结HTTPS工作过程&#xff08;经典面试题&#xff09;7. H…

后台程序 报错内容:java.sql.SQLException: Java heap space

原因有以下可能&#xff1a; 1、查询没有通过参数&#xff0c;而是直接查询出所有的记录&#xff1b; 2、是由于mysql单个字段存储的内容过大导致堆内存溢出&#xff1b; 3、JVM启动时&#xff0c;JVM堆会自动设置heap size值&#xff0c;值太小导致&#xff1b;

【高级程序设计语言C++】布隆过滤器

1. 布隆过滤器的概念2. 布隆过滤器的简单实现2.1. 布隆过滤器的长度和哈希函数的个数2.2. 布隆过滤器的结构2.2.1. 插入2.2.2. 查询2.2.3. 误判率的测试 2.3. 布隆过滤器的删除 1. 布隆过滤器的概念 布隆过滤器&#xff08;Bloom Filter&#xff09;是一种用于快速判断一个元素…