当前位置: 首页 > news >正文

华为OD机考双机位C卷 - 字符串拼接 (Java Python JS GO C++ C)

字符串拼接

2026华为OD机试双机位C卷 - 华为OD上机考试双机位C卷

华为OD机试双机位C卷真题目录点击查看: 【全网首发】2026华为OD机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)

题目描述

给定 M(0 < M ≤ 30)个字符(a-z),从中取出任意字符(每个字符只能用一次)拼接成长度为 N(0 < N ≤ 5)的字符串,

要求相同的字符不能相邻,计算出给定的字符列表能拼接出多少种满足条件的字符串,

输入非法或者无法拼接出满足条件的字符串则返回0。

输入描述

给定的字符列表和结果字符串长度,中间使用空格(" ")拼接

输出描述

满足条件的字符串个数

用例1

输入

aab 2

输出

2

说明

只能构成ab,ba。

用例2

输入

abc 2

输出

6

说明

可以构成:ab ac ba bc ca cb 。

解题思路

使用递归和回溯的思想来生成不同的字符串。具体的逻辑如下:

  1. 首先,我们定义一个函数 generateDistinctStrings ,这个函数接收以下参数:可用字符集 s ,目标字符串长度 length ,当前已生成的字符串 current ,已生成的结果集 result ,以及一个标记数组 used ,用来记录每个字符是否已被使用。

  2. generateDistinctStrings 函数中,首先检查当前已生成的字符串 current 的长度是否等于目标长度 length 。如果等于,说明我们已经生成了一个满足长度要求的字符串,将其添加到结果集 result 中,然后返回。

  3. 如果当前字符串 current 的长度还未达到目标长度 length ,我们就需要继续添加字符。此时,我们遍历可用字符集 s 中的每一个字符。对于每一个字符,我们首先检查它是否已经被使用(通过查看 used 数组),以及它是否与 current 的最后一个字符相同。如果字符已经被使用,或者与 current 的最后一个字符相同,我们就跳过这个字符,继续检查下一个字符。

  4. 如果一个字符未被使用,且与 current 的最后一个字符不同,我们就将它添加到 current 的末尾,然后标记这个字符为已使用,接着递归调用 generateDistinctStrings 函数,以生成下一个字符。

  5. 在递归调用返回后,我们需要取消对当前字符的使用标记,以便在后续的遍历中可以再次使用这个字符。这就是回溯的思想,即撤销之前的选择,尝试其他的选择。

以下是对应的中文伪代码:

函数 generateDistinctStrings(s, length, current, result, used)如果 current的长度 等于 length将 current 添加到 result返回对于 s中的每一个字符 c如果 c已被使用 或者 c与current的最后一个字符相同继续下一次循环标记 c为已使用generateDistinctStrings(s, length, current + c, result, used)取消标记 c的使用状态
http://www.jsqmd.com/news/455806/

相关文章:

  • GLM-OCR入门指南:从零开始完成第一个文档解析项目
  • 华为OD机考双机位C卷 - 字符串摘要(Java Python JS C_C++ GO )
  • 通义千问1.5-1.8B-Chat-GPTQ-Int4环境配置避坑指南:解决Python依赖冲突与版本问题
  • 3步打造专业级音效:开源音频均衡器实战指南
  • Text2Image-GUI:从零基础到高效部署的AI图像生成工具指南
  • cv_unet_image-colorization高性能推理优化:减少显存占用与提升处理速度
  • 3步打造专业AI图像生成工具:NMKD Stable Diffusion GUI全攻略
  • 考研后文书没亮点?北京留学中介故事线设计排名吸引招生官 - 博客湾
  • 实时口罩检测-通用技术博文:‘large neck, small head‘设计思想在口罩检测中的价值
  • 3步打造专业音效:Equalizer APO系统级音频均衡器全方位增强指南
  • 新手福音:借鉴Cursor AI编程思想,用快马平台实现零基础代码生成与学习
  • 英国留学申请中介文书榜单:留学机构个性化定制才是硬道理 - 博客湾
  • Balena Etcher技术解构:安全高效镜像烧录的创新方法指南
  • 科哥预置环境实测:Image-to-Video一键部署,新手也能玩转AI视频生成
  • 为什么你的论文AIGC率这么高?AI检测算法原理深度解读 - 我要发一区
  • 告别环境冲突!Python3.8镜像保姆级安装与使用教程
  • 突破直播流量天花板:obs-multi-rtmp多平台同步推流解决方案
  • PCB打样哪家更省心
  • PyTorch线性层Linear实战:从矩阵运算到批量数据处理(附代码示例)
  • Z-Image-GGUF文生图模型完整教程:从零到一,打造你的AI绘画工作流
  • ffmpeg新手福音,用快马平台生成可交互代码示例轻松入门音视频处理
  • vscode ssh 远程连接macos
  • Mac微信消息保护工具:WeChatIntercept本地存储实现方案
  • GLM-Image部署教程(含CPU Offload):16GB显存设备运行可行性验证
  • CTF实战:手把手教你破解Playfair密码(附BUUCTF真题解析)
  • 大数据领域 ClickHouse 的跨数据中心部署方案
  • Nano-Banana生产环境部署:Nginx反向代理+HTTPS安全访问配置
  • Playwright实战:如何用Python接管已登录淘宝的Chrome浏览器(附完整代码)
  • 自我介绍(王建民作业)
  • 用快马ai三分钟搭建linux命令交互学习平台,可视化原型即刻体验