【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 英文单词联想(100分) - 三语言AC题解(Python/Java/Cpp)

news2024/11/23 0:56:11

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员

✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解

💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导

👏 感谢大家的订阅➕ 和 喜欢💗

📎在线评测链接

https://app5938.acapp.acwing.com.cn/contest/2/problem/OD1083

🌍 评测功能需要 ⇒ 订阅专栏 ⇐ 后私信联系清隆解锁~

🍓OJ题目截图

在这里插入图片描述

文章目录

    • 📎在线评测链接
    • 🍓OJ题目截图
    • 🍿 英文单词联想
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入 1
      • 样例输出 1
      • 样例解释 1
      • 样例输入 2
      • 样例输出 2
      • 样例解释 2
      • 数据范围
      • 题解
      • 参考代码

🍿 英文单词联想

问题描述

K小姐是一家科技公司的产品经理,她最近负责开发一款英文输入法。其中一个重要功能是单词联想,即根据用户输入的单词前缀,从已输入的英文语句中联想出用户想输入的单词,并按字典序输出联想到的单词序列。如果无法联想到任何单词,则输出用户输入的单词前缀。

需要注意以下几点:

  1. 英文单词联想时,区分大小写。
  2. 缩略形式如"don’t",判定为两个单词,“don"和"t”。
  3. 输出的单词序列,不能有重复单词,且只能是英文单词,不能有标点符号。

输入格式

输入为两行:

  • 第一行输入一段由英文单词 w o r d word word 和标点符号组成的语句 s t r str str
  • 第二行为一个英文单词前缀 p r e pre pre

其中 0 < w o r d . l e n g t h ( ) ≤ 20 0 < word.length() \leq 20 0<word.length()20, 0 < s t r . l e n g t h ( ) ≤ 1000 0 < str.length() \leq 1000 0<str.length()1000, 0 < p r e . l e n g t h ( ) ≤ 20 0 < pre.length() \leq 20 0<pre.length()20

输出格式

输出符合要求的单词序列或单词前缀,存在多个时,单词之间以单个空格分割。

样例输入 1

I love you
He

样例输出 1

He

样例解释 1

从用户已输入英文语句"I love you"中提炼出"I"、“love”、“you"三个单词,接下来用户输入"He”,从已输入信息中无法联想到任何符合要求的单词,因此输出用户输入的单词前缀。

样例输入 2

The furthest distance in the world, ls not between life and death, But when I stand in front of you, Yet you don't know that I love you.
f

样例输出 2

front furthest

样例解释 2

从用户已输入英文语句"The furthest distance in the world, Is not between life and death, But when I stand in front of you, Yet you don’t know that I love you"中提炼出的单词,符合"f"作为前缀的有"furthest"和"front",按字典序排序并在单词间添加空格后输出,结果为"front furthest"。

数据范围

  • 0 < w o r d . l e n g t h ( ) ≤ 20 0 < word.length() \leq 20 0<word.length()20
  • 0 < s t r . l e n g t h ( ) ≤ 1000 0 < str.length() \leq 1000 0<str.length()1000
  • 0 < p r e . l e n g t h ( ) ≤ 20 0 < pre.length() \leq 20 0<pre.length()20

题解

本题的关键在于如何从给定的英文语句中提取出所有单词,并根据单词前缀进行过滤和排序。我们可以使用正则表达式或字符串分割的方法将语句拆分为单词列表,然后遍历单词列表,找出以给定前缀开头的单词,并将它们按字典序排列输出。

如果无法找到任何符合要求的单词,则直接输出给定的单词前缀。需要注意的是,在处理缩略形式时,应将其拆分为多个单词进行处理。

参考代码

  • Python
import re

def soln(sentence, prefix):
    # 使用正则表达式提取所有单词
    words = re.findall(r'\w+', sentence.lower())
    
    # 过滤并排序符合前缀的单词
    filtered_words = sorted([word for word in words if word.startswith(prefix.lower())])
    
    # 如果没有符合要求的单词,输出前缀
    if not filtered_words:
        return prefix
    else:
        return ' '.join(filtered_words)

# 读取输入
sentence = input()
prefix = input()

# 调用函数并输出结果
print(soln(sentence, prefix))
  • Java
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String sentence = scanner.nextLine();
        String prefix = scanner.nextLine();
        
        System.out.println(soln(sentence, prefix));
    }
    
    public static String soln(String sentence, String prefix) {
        // 使用正则表达式提取所有单词
        Pattern pattern = Pattern.compile("\\w+");
        Matcher matcher = pattern.matcher(sentence.toLowerCase());
        List<String> words = new ArrayList<>();
        while (matcher.find()) {
            words.add(matcher.group());
        }
        
        // 过滤并排序符合前缀的单词
        List<String> filteredWords = new ArrayList<>();
        for (String word : words) {
            if (word.startsWith(prefix.toLowerCase())) {
                filteredWords.add(word);
            }
        }
        Collections.sort(filteredWords);
        
        // 如果没有符合要求的单词,输出前缀
        if (filteredWords.isEmpty()) {
            return prefix;
        } else {
            return String.join(" ", filteredWords);
        }
    }
}
  • Cpp
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <regex>

using namespace std;

string soln(string sentence, string prefix) {
    // 使用正则表达式提取所有单词
    regex pattern("\\w+");
    sregex_iterator iter(sentence.begin(), sentence.end(), pattern);
    sregex_iterator end;
    vector<string> words;
    while (iter != end) {
        words.push_back(iter->str());
        ++iter;
    }
    
    // 过滤并排序符合前缀的单词
    vector<string> filteredWords;
    for (const string& word : words) {
        if (word.substr(0, prefix.length()) == prefix) {
            filteredWords.push_back(word);
        }
    }
    sort(filteredWords.begin(), filteredWords.end());
    
    // 如果没有符合要求的单词,输出前缀
    if (filteredWords.empty()) {
        return prefix;
    } else {
        string result;
        for (const string& word : filteredWords) {
            result += word + " ";
        }
        result.pop_back(); // 去掉最后一个空格
        return result;
    }
}

int main() {
    string sentence, prefix;
    getline(cin, sentence);
    getline(cin, prefix);
    
    cout << soln(sentence, prefix) << endl;
    
    return 0;
}

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

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

相关文章

使用uniapp编写微信小程序

使用uniapp编写微信小程序 文章目录 使用uniapp编写微信小程序前言一、项目搭建1.1 创建项目方式1.1.1 HBuilderX工具创建1.1.2 命令行下载1.1.3 直接Gitee下载 1.2 项目文件解构1.2.1 安装依赖1.2.2 项目启动1.2.3 文件结构释义 1.2 引入uni-ui介绍 二、拓展2.1 uni-app使用uc…

CVPR 2024最佳论文分享:生成图像动力学

CVPR 2024最佳论文分享&#xff1a;生成图像动力学 CVPR&#xff08;Conference on Computer Vision and Pattern Recognition&#xff09;是计算机视觉领域最有影响力的会议之一&#xff0c;主要方向包括图像和视频处理、目标检测与识别、三维视觉等。近期&#xff0c;CVPR 2…

盘点7款适合团队使用的知识库工具

作为一名技术爱好者和企业管理者&#xff0c;我深知知识库工具在日常工作中的重要性。 无论是个人笔记管理还是企业知识共享&#xff0c;知识库工具都能极大地提升我们的工作效率和信息管理水平。 根据麦肯锡全球研究院报告显示&#xff0c;使用知识库工具可以帮助个人或者企…

JavaWeb-day28_HTML

今日内容 零、 复习昨日 一、HTML 零、 复习昨日 一、Web开发 前端三大件 HTML ,页面展现CSS , 样式JS (JavaScript) , 动起来 二、HTML 2.1 HTML概念 ​ 网页&#xff0c;是网站中的一个页面&#xff0c;通常是网页是构成网站的基本元素&#xff0c;是承载各种网站应用的平台…

普乐蛙景区9d电影体验馆商场影院娱乐设备旋转飞行影院

今天与大家聊聊VR娱乐新潮流&#xff0c;我们普乐蛙的新品——旋转飞行影院&#xff01;裸眼7D环幕影院&#xff0c;话不多说上产品&#xff01;我们通过亲身体验来给大家讲讲这款高性价比新品的亮点。 想象一下走上电动伸缩梯&#xff0c;坐进动感舱&#xff0c;舱门缓缓合上&…

RuoYi_Cloud本地搭建

目录 1.先进入若依官网下载源码 2.在git链接在idea本地打开 3.建立数据库 &#xff08;1&#xff09;创建一个ruoyi_cloud数据库&#xff0c;设定好账号密码 &#xff08;2&#xff09;建表 4.配置nacos &#xff08;1&#xff09;nacos官网下载2.0.x以上的版本 &#…

Java常量、变量、成员内部类

文章目录 1.常量2.变量3.成员内部类4.变动 1.常量 实例常量&#xff1a;只用final修饰&#xff0c;是某个具体类的实例 静态常量&#xff1a;finalstatic修饰&#xff0c;属于类&#xff0c;所有实例共享同一个类常量 2.变量 实例变量(成员变量)&#xff1a;定义在类内部但在…

上海App开发测试需要注意的内容

在上海app开发中&#xff0c;测试发挥着至关重要的作用。及时、专业的对app进行测试&#xff0c;能够快速发现app存在的漏洞与问题&#xff0c;从而及时进行修正&#xff0c;确保app的顺利上线与发布。那么&#xff0c;在上海app开发测试的过程中&#xff0c;需要注意哪些内容呢…

1.驱动程序框架

驱动是用来控制和操作硬件的软件。 在linux下&#xff0c;一切皆文件。当我们write一个文件时&#xff0c;内核通过文件的file_operations结构体(include/linux/fs.h)来找到对应的驱动函数&#xff0c;最终调用的是存储介质(ssd&#xff0c;硬盘等)驱动提供的write函数(这中间…

米联客FDMA驱动OV5640摄像头—基于野火Zynq7020开发板

使用米联客的ddr3缓存方案 FDMA驱动OV5640摄像头在RGB888屏幕上显示。 总体BLOCK DESIGN框架图 RTC框架图 FDMA设置 FDMA控制器设置 帧选择IP设置 IP核封装及代码在工程文件中 参考 FDMA3.1数据缓存方案全网最细讲解&#xff0c;自创升级版&#xff0c;提供3套视频和音频缓存…

python案例-自动识别图片数字并进行填充,小键盘数字键练习工具轻松达到最高评级!ddddocr+pyauotgui

🌈所属专栏:【python】✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询!您的点赞、关注、收藏、评论,是对我最大的激励和支持!!!🤩🥰😍 目录 前言 测试工具界面 代码完成思…

VMware Workstation环境下DNS的安装配置,并使用ubuntu来测试

需求说明: 某企业信息中心计划使用IP地址17216.11.0用于虚拟网络测试,注册域名为xyz.net.cn.并将172.16.11.2作为主域名的服务器(DNS服务器)的IP地址,将172.16.11.3分配给虚拟网络测试的DHCP服务器,将172.16.11.4分配给虚拟网络测试的web服务器,将172.16.11.5分配给FTP服务器…

python水仙花数 青少年编程电子学会python编程等级考试三级真题解析2022年3月

python水仙花数 2022年3月 python编程等级考试级编程题 一、题目要求 1、编程实现 明明请你帮忙寻找100-999之间的所有"水仙花数”,并统计个数。"水仙花数"是指一个三位数各位数字的立方和等于该数本身,例如:1531*1*15*5*53*3*3。要求输出结果如下所示: 153…

工业路由器与家用路由器的区别

在现代网络环境中&#xff0c;路由器扮演着至关重要的角色。无论是在家庭网络还是在工业网络&#xff0c;选择合适的路由器都至关重要。本文将从多个角度&#xff0c;对工业路由器与家用路由器进行详细比较&#xff0c;帮助您更好地理解二者的区别。 1、安全性 工业路由器&…

Spring学习02-[Spring容器核心技术IOC学习]

Spring容器核心技术IOC学习 什么是bean?如何配置bean?Component方式bean配合配置类的方式import导入方式实现ImportSelector类的方式-批量注册bean实现ImportBeanDefinitionRegistrar的方式 实例化bean推断构造函数使用实例工厂方法实例化----Bean的方式 使用工厂Bean。实例化…

你的编程小助手:Kimi!!【送源码】

从OpenAI发布AI大模型到现在已经快2年时间&#xff0c;中间随着新模型的不断出现&#xff0c;也让大家认识到了AI的强大之处&#xff0c;现在AI已经渗透到我们生活&#xff0c;工作的方方面面。 这期间国产大模型也在努力发展&#xff0c;不断完善&#xff0c;甚至一些大模型在…

【unity笔记】五、UI面板TextMeshPro 添加中文字体

Unity 中 TextMeshPro不支持中文字体&#xff0c;下面为解决方法&#xff1a; 准备字体文件&#xff0c;从Windows系统文件的Fonts文件夹里拖一个.ttf文件&#xff08;C盘 > Windows > Fonts &#xff09; 准备字库文件,新建一个文本文件&#xff0c;命名为“字库”&…

【计算机毕业设计】079基于微信小程序网上商城设计

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

自研网关架构设计

网关项目 1. 了解网关网关横向对比为什么自研网关 2. 架构设计技术栈技术要点异步化设计使用缓存缓冲合理使用串行化吞吐量为王合适的工作线程 架构图 1. 了解网关 概念 访问数据、业务逻辑或功能的 “前门”负责处理接受和处理调用过程中的所有任务 类型 RESTful APl 使用…

数据结构_优先级队列(堆)

目录 一、优先级队列 1.1 堆 1.2 PriorityQueue接口 二、模拟实现优先级队列 2.1 初始化 2.2 创建大根堆 (向下调整) 2.3 堆的插入 2.4 堆的删除 2.5 堆排序 总结 一、优先级队列 优先级队列是一种特殊的队列&#xff0c;其出队顺序与入队顺序无关&#xff0c;而与优…