网易首页 > 网易号 > 正文 申请入驻

2026-06-09:带权单词映射。用go语言,给定一个字符串数组 words,以及一个长度为 26 的整数数组 weights,其中 weights[...

0
分享至

2026-06-09:带权单词映射。用go语言,给定一个字符串数组 words,以及一个长度为 26 的整数数组 weights,其中 weights[i] 表示字母表中第 i 个小写字母的权重。

每个单词的权重是该单词中所有字符对应权重的总和。对每个单词计算:

1.取它的权重对 26 的余数;

2.将这个余数按“倒序字母”的规则映射到字符:余数为 0 对应 'z',1 对应 'y',…,25 对应 'a'。

最后把所有单词对应得到的字符依次连接,形成返回的字符串。

1 <= words.length <= 100。

1 <= words[i].length <= 10。

weights.length == 26。

1 <= weights[i] <= 100。

words[i] 仅由小写英文字母组成。

输入: 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"。

题目来自力扣3838。

一、分步详细执行过程 步骤1:初始化输入数据

main函数中,定义两个核心输入变量:

  1. 1. 字符串数组words["abcd", "def", "xyz"],包含3个需要处理的单词;

  2. 2. 整数数组weights:长度固定为26,对应小写字母a-z的权重,weights[0]是a的权重,weights[1]是b的权重……weights[25]是z的权重。

步骤2:调用核心函数mapWordWeights

函数接收wordsweights两个参数,开始逐单词处理,第一步先初始化结果容器
创建一个空的字节切片ans,预分配容量为单词的数量(3),用于存储每个单词最终映射的字符。

步骤3:遍历处理每一个单词

程序会依次遍历words中的每一个单词,对每个单词执行计算总权重取余数倒序映射字符三个子步骤:

子步骤3.1:处理第一个单词 "abcd"

  1. 1.计算单词总权重
    遍历单词的每一个字符,将字符转换为对应权重索引(字符c - 'a'得到字母在a-z中的序号),累加所有字符的权重:

  • • a → 序号0 → 权重5

  • • b → 序号1 → 权重3

  • • c → 序号2 → 权重12

  • • d → 序号3 → 权重14
    总权重 = 5+3+12+14 = 34

2.计算权重对26的余数:34 % 26 = 8

3.倒序字母映射字符:规则是余数0→z,1→y……25→a,计算公式:'z' - 余数
余数8 → 'z' - 8 = 字符'r',将'r'存入结果容器ans

子步骤3.2:处理第二个单词 "def"

  1. 1.计算单词总权重

  • • d → 序号3 → 权重14

  • • e → 序号4 → 权重1

  • • f → 序号5 → 权重2
    总权重 = 14+1+2 = 17

2.计算权重对26的余数:17 % 26 = 17

3.倒序字母映射字符:'z' -17 = 字符'i',将'i'存入结果容器ans

子步骤3.3:处理第三个单词 "xyz"

  1. 1.计算单词总权重

  • • x → 序号23 → 权重7

  • • y → 序号24 → 权重7

  • • z → 序号25 → 权重2
    总权重 =7+7+2=16

2.计算权重对26的余数:16 %26=16

3.倒序字母映射字符:'z'-16=字符'j',将'j'存入结果容器ans

步骤4:拼接结果并返回

所有单词处理完成后,结果容器ans中存储了['r','i','j'],将字节切片转换为字符串,得到最终结果"rij"

步骤5:输出结果

main函数打印最终结果rij,程序执行结束。

二、时间复杂度分析

时间复杂度描述程序执行时操作次数的增长趋势,我们分维度计算:

  1. 1. 设单词数组长度为N(题目中1≤N≤100),单个单词的最大长度为M(题目中1≤M≤10);

  2. 2. 程序核心操作:遍历每个单词(N次),遍历单词的每个字符(M次),字符权重计算、取余、映射都是常数时间操作(O(1));

  3. 3. 总操作次数 = N × M;

  4. 4. 最终时间复杂度:O(N*M)

补充:题目中N和M都是固定小范围数值,程序执行效率极高。

三、额外空间复杂度分析

额外空间复杂度描述除输入数据外,程序额外占用的内存空间

  1. 1. 程序额外创建的变量:总权重累加变量s、遍历用的临时字符/索引变量、结果字节切片ans

  2. 2. 结果切片ans的长度等于单词数量N,是唯一与输入规模相关的额外空间;

  3. 3. 其余变量均为常数级空间(O(1));

  4. 4. 最终额外空间复杂度:O(N)

总结
  1. 1. 执行过程:准备输入→逐单词计算总权重→计算余数→倒序映射字符→拼接结果→输出;

  2. 2. 时间复杂度:O(N*M)(N为单词个数,M为单词最大长度);

  3. 3. 额外空间复杂度:O(N)(仅存储结果的切片占用线性空间)。

Go完整代码如下:

package main

import (
"fmt"
)

func mapWordWeights(words []string, weights []int)string {
ans := make([]byte, 0, len(words))
for _, word := range words {
s := 0
for _, c := range word {
s += weights[c-'a']
}
ans = append(ans, byte('z'-s%26))
}
returnstring(ans)
}

func main() {
words := []string{"abcd", "def", "xyz"}
weights := []int{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}
result := mapWordWeights(words, weights)
fmt.Println(result)
}

Python完整代码如下:

# -*-coding:utf-8-*-

def map_word_weights(words, weights):
ans = []
for word in words:
s = 0
for c in word:
s += weights[ord(c) - ord('a')]
ans.append(chr(ord('z') - s % 26))
return''.join(ans)

def main():
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]
result = map_word_weights(words, weights)
print(result)

if __name__ == "__main__":
main()

C++完整代码如下:

  




std::string mapWordWeights(const std::vector string >& words, const std::vector< int >& weights) {
std:: string ans;
ans.reserve(words.size());

for ( const auto& word : words) {
int s = 0 ;
for (char c : word) {
s += weights[c - 'a' ];
}
ans.push_back(static_cast ( 'z' - s % 26 ));
}

return ans;
}

int main() {
std::vector string > words = { "abcd" , "def" , "xyz" };
std::vector< int > 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 };

std:: string result = mapWordWeights(words, weights);
std::cout << result << std::endl;

return 0 ;
}

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
最恐怖的“年度印钞机”,来了

最恐怖的“年度印钞机”,来了

中国新闻周刊
2026-06-30 23:13:06
梦鸽李天一赴美不归?看到85岁李双江“现状”,原来杨洪基没说谎

梦鸽李天一赴美不归?看到85岁李双江“现状”,原来杨洪基没说谎

阿纂看事
2024-11-05 11:54:58
138万赞,3.5万评论!孙兴慜道歉大火,耶鲁大学教授:成年人楷模

138万赞,3.5万评论!孙兴慜道歉大火,耶鲁大学教授:成年人楷模

新杀猪的秀才
2026-07-01 00:05:33
Shams:小乔丹与鹈鹕达成续约 将迎生涯第19个赛季

Shams:小乔丹与鹈鹕达成续约 将迎生涯第19个赛季

北青网-北京青年报
2026-07-01 09:50:52
TA:本届世界杯目前只有阿根廷能阻止法国,两队或在决赛重逢

TA:本届世界杯目前只有阿根廷能阻止法国,两队或在决赛重逢

懂球帝
2026-07-01 08:05:27
一旦开战恐全军覆没?美专家已警告,解放军实力太强,美军打不过

一旦开战恐全军覆没?美专家已警告,解放军实力太强,美军打不过

那些不堪年华追忆流
2026-07-01 09:24:41
三箭齐发!南大博士犀利点评韩红基金会,网友说捐19060元去哪了

三箭齐发!南大博士犀利点评韩红基金会,网友说捐19060元去哪了

火山詩话
2026-06-30 10:16:14
WTT美国大满贯:女单大爆冷!世界第9出局 朱雨玲3:1 蒯曼温瑞博狂胜

WTT美国大满贯:女单大爆冷!世界第9出局 朱雨玲3:1 蒯曼温瑞博狂胜

林子说事
2026-07-01 11:09:56
徐帆回应离婚9个月后,冯小刚再陷争议,养女徐朵成导火索

徐帆回应离婚9个月后,冯小刚再陷争议,养女徐朵成导火索

枯蝶
2026-05-21 22:22:13
9 月 9 日苹果发布会敲定!iPhone 18 Pro和Ultra 登场

9 月 9 日苹果发布会敲定!iPhone 18 Pro和Ultra 登场

巴士数码
2026-06-29 21:44:48
清北都不上?湖北状元702分拒绝北大清华,他的选择让所有人沉默

清北都不上?湖北状元702分拒绝北大清华,他的选择让所有人沉默

辉哥说动漫
2026-07-01 07:08:14
体能+心态是输球主因!王曼昱4小时打2场,主办方赛程安排不合理

体能+心态是输球主因!王曼昱4小时打2场,主办方赛程安排不合理

排球黄金眼
2026-07-01 10:26:58
亚马尔:知道有一半人爱我有一半人恨我;我非常欣赏维尼修斯

亚马尔:知道有一半人爱我有一半人恨我;我非常欣赏维尼修斯

懂球帝
2026-07-01 02:04:07
冯小刚该恨死韩红了

冯小刚该恨死韩红了

智识漂流
2026-06-24 01:05:27
密集涨停!多股上半年业绩暴增(附股)

密集涨停!多股上半年业绩暴增(附股)

数据宝
2026-07-01 11:18:08
理想汽车6月交付量为3.09万辆,同比、环比双双下跌

理想汽车6月交付量为3.09万辆,同比、环比双双下跌

识礁Farsight
2026-07-01 10:24:45
截胡曼联!热刺签下21岁葡萄牙红星 8500万镑创纪录 夏窗已买5人

截胡曼联!热刺签下21岁葡萄牙红星 8500万镑创纪录 夏窗已买5人

我爱英超
2026-07-01 04:35:21
WTT大满贯战报:连爆大冷国乒3-0横扫世界第2,世界第3也2-3出局

WTT大满贯战报:连爆大冷国乒3-0横扫世界第2,世界第3也2-3出局

安海客
2026-07-01 04:07:52
一场3-0揭开真相,姆巴佩追上梅西不算啥,法国夺冠最强武器是他

一场3-0揭开真相,姆巴佩追上梅西不算啥,法国夺冠最强武器是他

球盲百小易
2026-07-01 10:54:52
大陆要动手抓人了,台独分子一个都別想跑

大陆要动手抓人了,台独分子一个都別想跑

一口娱乐
2026-06-30 13:27:46
2026-07-01 12:24:49
moonfdd incentive-icons
moonfdd
福大大架构师每日一题
1309文章数 69关注度
往期回顾 全部

教育要闻

教育孩子没有应该

头条要闻

老人获帮助后车祸去世 孙子:视频里他笑得合不拢嘴

头条要闻

老人获帮助后车祸去世 孙子:视频里他笑得合不拢嘴

体育要闻

德国足球,脸都不要了

娱乐要闻

罗晋大孤山素颜照,秃顶白发引热议

财经要闻

新氧贷款:宣传年化15%,实际顶格24%

科技要闻

美国放行,Anthropic两款顶级模型将恢复

汽车要闻

奇瑞风云A9探店 五个理由一定来看看

态度原创

教育
亲子
游戏
本地
公开课

教育要闻

高中英语平时120左右,遇到瓶颈上不去,如何稳定在一百三四十?

亲子要闻

隔代育儿有矛盾?这样沟通,一家人和和睦睦

魔兽世界:WLK25人奥杜尔最无争议的5大极品,你觉得还有哪些?

本地新闻

贵州小城的新目标:举办“村超”世界杯!

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版