LeetCode 3838.带权单词映射:求和、取模、拼接(附python一行版)

【LetMeFly】3838.带权单词映射:求和、取模、拼接(附python一行版)

力扣题目链接:https://leetcode.cn/problems/weighted-word-mapping/

给你一个字符串数组 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] 仅由小写英文字母组成。

解题方法:模拟

对于每个单词:

  1. 累加单词中每个字母的权重
  2. 总权重对26取模
  3. 重新映射为字母

然后拼接每个单词得到的字母就好了。

  • 时间复杂度 O ( 总字母数 ) O(总字母数) O(总字母数)
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
cpp 复制代码
/*
 * @LastEditTime: 2026-06-13 23:18:21
 */
class Solution {
public:
    string mapWordWeights(vector<string>& words, vector<int>& weights) {
        string ans;
        for (string& word : words) {
            int cnt = 0;
            for (char c : word) {
                cnt += weights[c - 'a'];
            }
            ans += 'a' + (25 - cnt % 26);
        }
        return ans;
    }
};
Python
python 复制代码
'''
LastEditTime: 2026-06-14 19:22:15
'''
from typing import List

class Solution:
    def mapWordWeights(self, words: List[str], weights: List[int]) -> str:
        return ''.join(chr(ord('a') + (25 - sum(weights[ord(c) - ord('a')] for c in word) % 26)) for word in words)

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

相关推荐
tkevinjd3 小时前
MiniCode 项目详解6:原项目控制系统的10个缺陷(已修复)
python·llm·agent
dNGUZ7UGj4 小时前
10分钟完成第一个Python小游戏
python·django
2601_954526754 小时前
【工业传感与算法实战】温漂补偿与零点抗漂破局:基于二阶多项式拟合的 C/C++ 边缘校准算法,深度拆解“压力变送器什么牌子好”的技术硬指标
c语言·c++·算法
没有梦想的咸鱼185-1037-16634 小时前
AI-Python机器学习与深度学习技术:CNN/Transformer/扩散模型、SHAP可解释及Hermes智能体自动化
人工智能·python·深度学习·机器学习·chatgpt·cnn·transformer
霸道流氓气质5 小时前
SpringBoot中通用工具类库(Utils)封装与使用实践
spring boot·后端·python
叩码以求索5 小时前
浅谈:算法萌新如何高效刷题应对面试(一)
算法·面试·职场和发展
Draina7 小时前
CBC填充预言攻击-CBC Padding Oracle Crypto Attack
python·安全·web安全·网络安全·密码学·安全性测试
c238567 小时前
把 C++ 内存分配拆透:new 与 malloc 的三层血缘
开发语言·c++·算法
Angel Q.7 小时前
特征提取 | DINO 到 DINOv3
图像处理·python
不如语冰8 小时前
AI大模型入门-pytorch-张量2 tensor创建
python