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

LeetCode 3838. 带权单词映射【模拟】简单

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及到通用解法时更将归纳总结出相应的算法模板。

为了方便在PC上运行调试、分享代码文件,我还建立了相关的仓库:https://github.com/memcpy0/LeetCode-Conquest。在这一仓库中,你不仅可以看到LeetCode原题链接、题解代码、题解文章链接、同类题目归纳、通用解法总结等,还可以看到原题出现频率和相关企业等重要信息。如果有其他优选题解,还可以一同分享给他人。

由于本系列文章的内容随时可能发生更新变动,欢迎关注和收藏征服LeetCode系列文章目录一文以作备忘。

给你一个字符串数组words,其中每个字符串表示一个由小写英文字母组成的单词。

同时给你一个长度为 26 的整数数组weights,其中weights[i]表示第i个小写英文字母的权重。

单词的权重定义为其所有字符权重的总和

对于每个单词,将其权重对 26 取模,并将结果按字母倒序映射到一个小写英文字母(0 -> 'z', 1 -> 'y', ..., 25 -> 'a')。

返回一个由所有单词映射后的字符按顺序连接而成的字符串。

示例 1:

输入:words=["abcd","def","xyz"],weights=[5,3,12,14,1,2,3,2,10,6,6,9,7,8,7,10,8,9,6,9,9,8,3,7,7,2]输出:"rij"

解释:

  • "abcd"的权重是5 + 3 + 12 + 14 = 34。对 26 取模的结果是34 % 26 = 8,映射为'r'
  • "def"的权重是14 + 1 + 2 = 17。对 26 取模的结果是17 % 26 = 17,映射为'i'
  • "xyz"的权重是7 + 7 + 2 = 16。对 26 取模的结果是16 % 26 = 16,映射为'j'

因此,连接映射字符后形成的字符串是"rij"

示例 2:

输入:words=["a","b","c"],weights=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]输出:"yyy"

解释:
每个单词的权重均为 1。对 26 取模的结果是1 % 26 = 1,映射为'y'

因此,连接映射字符后形成的字符串是"yyy"

示例 3:

输入:words=["abcd"],weights=[7,5,3,4,3,5,4,9,4,2,2,7,10,2,5,10,6,1,2,2,4,1,3,4,4,5]输出:"g"

解释:
"abcd"的权重是7 + 5 + 3 + 4 = 19。对 26 取模的结果是19 % 26 = 19,映射为'g'

因此,连接映射字符后形成的字符串是"g"

提示:

  • 1 <= words.length <= 100
  • 1 <= words[i].length <= 10
  • weights.length == 26
  • 1 <= weights[i] <= 100
  • words[i]仅由小写英文字母组成。

方法 按题意模拟

「将结果按字母倒序映射到一个小写英文字母」,相当于z zz减去【权重取模后的值】:减0 00就是z zz,减1 11就是y yy…… 减25 2525就是a aa

classSolution{publicStringmapWordWeights(String[]words,int[]weights){intn=words.length;char[]ans=newchar[n];for(inti=0;i<n;i++){intsum=0;for(charch:words[i].toCharArray()){sum+=weights[ch-'a'];}ans[i]=(char)('z'-sum%26);}returnnewString(ans);}}
classSolution{public:stringmapWordWeights(vector<string>&words,vector<int>&weights){intn=words.size();stringans(n,0);for(inti=0;i<n;i++){intsum=0;for(charch:words[i]){sum+=weights[ch-'a'];}ans[i]='z'-sum%26;}returnans;}};
classSolution:defmapWordWeights(self,words:List[str],weights:List[int])->str:ans=[]ord_a=ord('a')ord_z=ord('z')forwinwords:s=sum(weights[ord(ch)-ord_a]forchinw)ans.append(chr(ord_z-s%26))return''.join(ans)
funcmapWordWeights(words[]string,weights[]int)string{ans:=make([]byte,len(words))fori,w:=rangewords{sum:=0for_,ch:=rangew{sum+=weights[ch-'a']}ans[i]='z'-byte(sum%26)}returnstring(ans)}

复杂度分析:

  • 时间复杂度:O ( L ) O(L)O(L),其中L LL是所有w o r d s [ i ] words[i]words[i]长度之和。
  • 空间复杂度:O ( 1 ) O(1)O(1),返回值不计入。
http://www.cnnetsun.cn/news/2955105.html

相关文章:

  • 终极指南:如何快速修复WaveTools抽卡记录同步问题
  • 一线观察:长期体验科思创 2655 平替,看到的企业管理真相
  • 【JAVA毕设源码分享】基于Spring Boot的长春美食推荐管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • AI写专著的正确打开方式:AI专著写作工具,20万字专著轻松生成!
  • 电厂 / 化工高危场景如何防患未然?AI 边缘算力盒子给出答案
  • ZigBee PRO网络配置实战:从ZPS编辑器到性能调优
  • Selenium自动化登录:构建可演进的Web界面登录协议
  • Platinum-MD:5分钟掌握跨平台MiniDisc音乐管理的高效解决方案
  • CodeWarrior IDE 5.7 控制台应用创建与高效源码编辑实战指南
  • CalipsoVFM:领域专用视觉基础模型的构建与工业实践
  • 岩石爆破优化:从经验到科学的精细控制与工程实践
  • ZigBee ZCL协议开发实战:温控器与色彩控制集群详解
  • 从零到一:在Tasking IDE中构建TC26x工程框架与集成自定义代码
  • AutoGen多智能体协作系统:构建可调试、可审计的AI应用操作系统
  • CodeWarrior IDE 5.6性能优化与团队协作配置实战指南
  • 贾子理论三层结构模型:基于LWEVS的跨文明统一认知评估体系研究
  • vLLM生产级部署指南:高吞吐低延迟大模型推理引擎实战
  • ZigBee ZCL开发实战:从核心原理到NXP平台应用指南
  • 5分钟掌握Cat-Catch:浏览器资源嗅探工具完全指南,轻松下载网页视频音频
  • 大模型伦理审查流程与工具
  • 告别网盘限速:九大平台直链解析工具完全指南
  • 从零开始构建专业PDF:printpdf如何让Rust开发者爱上文档生成
  • ATPG覆盖率提升受阻:AU类型Fault激增的深度诊断与实战Debug
  • SM2与SM4国密算法实战指南:从原理到代码实现与问题排查
  • Windows HEIF图片查看转换全攻略:3个技巧解决iPhone照片兼容难题
  • SAP-ABAP:搜索帮助入门:4种常见搜索帮助类型的适用场景与基础配置步骤
  • AI Agent开发实战㉚|Agent安全加固:从注入攻击到数据泄露的防御
  • 如何快速掌握微信小程序逆向工程:5步学会使用wxappUnpacker解包神器
  • MQTT 协议精讲:QoS 0/1/2 背后的工程权衡,不是文档翻译
  • 终极指南:Visual C++ Redistributable AIO - 一键解决所有Windows程序运行问题